一、自定义异常类
# 继承 Exception
class MyError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
# 求和的方法
def add(a,b):
# 如果a和b中有负数,就向调用处抛出异常
if a < 0 or b < 0:
raise MyError('自定义的异常')
r = a + b
return r
# 调用 求和的方法
try:
print(add(-123,456))
except MyError as e:
print(e.n)
二、常见异常处理类(举例3个)
1. try…except …
try:
# 可能会引发异常的代码
result = 1 / 0
except ZeroDivisionError:
# 处理特定类型的异常
print("不能除以零")
2.try…except…else…
try:
#可能会引发异常的代码
except Exception [ as reason]:
#用来处理异常的代码
else:
#如果try子句中的代码没有引发异常,就继续执行这里的代码
3.try…except…finally…
三、默认异常处理 方案
try:
print(1/0)
except ZeroDivisionError as e:
print(e)
四、主动触发异常 方案
def add(a,b):
# 如果a和b中有负数,就向调用处抛出异常
if a < 0 or b < 0:
raise Exception('两个参数中不能有负数!')
r = a + b
return r
print(add(-123,456))
五、无措处理方案
# 无措处理方案
try:
age = int(input("请输入您的年龄:"))
except ValueError:
pass # 无操作处理
六、finally 扫尾工作处理方案
#finally扫尾工作处理方案
try:
a = int(input("请输入 a 的值:"))
print(20 / a)
except:
print("发生异常!")
else:
print("执行 else 块中的代码")
finally:
print("执行 finally 块中的代码")