1、异常的语法
try:
# 正常执行的语句
pass
except Exception1:
# 针对异常情况1 进行的异常处理
pass
except Exception2:
# 针对异常情况2 进行的异常处理
pass
except (Exception3,Exception4):
# 针对异常情况3和异常情况4进行的异常处理
pass
except Exception as exp:
# 打印异常信息
print(exp)
else:
# 没有异常时才会执行的代码
pass
finally:
# 无论有无异常,都会执行的代码
pass
2、异常的传递性
异常具有传递性,所有的异常都会逐级向上上报。通常为了避免try的语法泛滥,都会尽量在上一级进行try语句。正因为异常具有传递性,所以在控制台中能够进行错误溯源。
demo
class divide(object):
def divide_method(self,i):
"""将除数除以8整除"""
return 8/i
def divide_method_test(self):
self.divide_method()
d = divide()
d.divide_method(0)
Traceback (most recent call last):
File "c:/Users/zhuji/Desktop/python/divide.py", line 12, in <module>
d.divide_method(0)
File "c:/Users/zhuji/Desktop/python/divide.py", line 5, in divide_method
return 8/i
ZeroDivisionError: division by zero
3、主动抛出异常
主动跑出异常具有以下两个操作步骤:
- 对Exception进行实例化
- 使用 raise 关键字抛出异常
def is_name_right():
name = "david"
if len(name)==5:
return name
raise Exception("名字长度不是5")
print(is_name_right())
david
def is_name_right():
name = "bob"
if len(name)==5:
return name
raise Exception("名字长度不是5")
print(is_name_right())
Traceback (most recent call last):
File "c:/Users/zhuji/Desktop/python/raiseError.py", line 8, in <module>
print(is_name_right())
File "c:/Users/zhuji/Desktop/python/raiseError.py", line 6, in is_name_right
raise Exception("名字长度不是5")
Exception: 名字长度不是5
网友评论