自定义异常处理|学习笔记

简介: 快速学习 自定义异常处理

开发者学堂课程【Python 语言基础 3:函数、面向对象、异常处理自定义异常处理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/601/detail/8765


自定义异常处理


目录:

一、 raise 语句实现抛出异常对象

二、 if……else…… 语句实现抛出异常对象

三、 自定义类实现抛出异常

 

理解异常处理方式之后,本课时内容学习 Python 中如何实现抛出异常,也即用户自定义异常对象。

 

一、raise 语句实现抛出异常现象

可以使用 raise 语句来抛出异常,raise 语句后需要跟一个异常类或者异常的实例。目的是当运算中出现负数时向外抛出异常,raise 语句实现抛出异常实现代码如下:

def add(a,b):

#如果a和b中有负数,就向调用出抛出异常

If a < 0 or b < 0;

# raise 用于向外部抛出异常,后面可以跟一个异常类或者异常类的实例。

Raise Exception

r = a+b

return r

print(add(123,456))

运行上述代码结果正常,输出结果 579。

 

如果将输出结果print(add(123,456))改写为

print(add(-123,456))运行结果就会抛出异常,但是此时应该注意的抛出的异常没有信息,因为现在传的是一个类,实例是由解析器自己创建的,如若想传递信息,则 raise Exception 处代码需改写为:raise Exception(‘二个参数中不能有负数!’),运行代码后即可传递出信息:二个参数中不能有负数!因此,在此我们可以手动的向外部使用 raise 抛出异常信息。

接着我们分析为何我们在此处抛出异常,我们抛出异常的目的,是告诉外部此处存在问题,希望引起注意并加以处理。此处抛出目的仅仅是抛出异常而不处理异常结果。

 

二、if……else…… 语句实现抛出异常对象

对于异常的处理我们也可以使用 if……else…… 来代替异常处理,如上述 raise 抛出异常也可以使用以下代码代替:

def add(a,b):

#如果a和b中有负数,就向调用出抛出异常

If a < 0 or b < 0;

# 通过if……else……来代替异常的处理

Return None

r = a+b

return r

print(add(-123,456))

运行结果为 “None”

需要注意的是,如果运行结果不需要处理,此处可以使用 if……else…… 代替 raise,如果此处异常结果对后面影响严重需要处理,则需要使用 raise 抛出异常,引起注意并加以处理,以免引起对后面代码运行产生影响。

综述,raise 抛出异常是提醒代码运行者注意此处异常并加以注意。

 

三、自定义类实现抛出异常

但是 raise Exception 并不能反馈异常的类型,有时我们希望如果是变量的错,我们抛出 NameError;如果是索引错误,我们抛出 IndexError。如若实现这中目的,也是可以是实现,只需创建一个类继承 Exception 即可。实现代码如下:

class Myerror(Exception):

pass

def add(a,b):

#如果 a 和 b 中有负数,就向调用出抛出异常

If a < 0 or b < 0;

# raise 用于向外部抛出异常,后面可以跟一个异常类或者异常类的实例。

Raise Myerror(‘自定义的异常‘)

r = a+b

return r

print(add(123,456))

运行上述代码即可实现使用自定义类抛出异常。

相关文章
|
11月前
|
C++
65 C++ - 自定义异常
65 C++ - 自定义异常
41 0
|
3月前
|
前端开发 Java Spring
项目使用 GlobalExceptionHandler 与 @RestControllerAdvice自定义异常 二
项目使用 GlobalExceptionHandler 与 @RestControllerAdvice自定义异常 二
36 3
|
3月前
|
Java 数据格式 Spring
项目使用 GlobalExceptionHandler 自定义异常 一
项目使用 GlobalExceptionHandler 自定义异常 一
59 3
|
5月前
|
Java
自定义异常类
自定义异常类
20 0
|
Java
如何自定义异常类
如何自定义异常类
45 0
|
5月前
|
Java
java异常处理,如何自定义异常?
java异常处理,如何自定义异常?
89 4
|
12月前
|
Java
异常的处理和自定义异常
在Java中,异常(Exception)是指程序在运行过程中遇到的错误或异常情况。Java提供了异常处理机制,可以捕获和处理异常,使程序在遇到异常时能够继续执行或进行相应的处理。 异常处理的基本结构是try-catch语句块。在try块中编写可能抛出异常的代码,如果在try块中抛出了异常,那么程序会跳转到catch块中执行相应的异常处理代码。 以下是一个简单的异常处理的示例: ```java try { // 可能抛出异常的代码 int result = 10 / 0; } catch (ArithmeticException e) { // 异常处理代码
46 0
|
SQL 数据安全/隐私保护
异常处理与自定义异常
异常处理与自定义异常
54 0
C++学习笔记_10 异常处理 2021-04-27
C++学习笔记_10 异常处理 2021-04-27
|
程序员
3、自定义异常处理
查询条件: 站点id、模板id、页面别名
84 0