# 普通异常
try:
print('比如说这句话出现异常')
except (异常的名字1,异常的名字2):
print('捕获到‘异常的名字1’或‘异常的名字2’后所做的处理')
except 异常的名字3:
print('捕获到‘异常的名字3’后所做的处理')
except Exception as ret:======>相当于创建一个异常对象,然后将变量ret指向该异常对象
print('如果用了Exception,那么意味着只要上面的except没有捕获到异常,这个except一定会捕获到(好像ACL最后一条deny来兜底一样)')
print(ret)============>将捕获到的异常信息传递给ret,通过print(ret)来查看异常信息。
else:
print('没有异常才会执行此处')
finally:
print('不管产生异常没有最后都要执行此处')
# 异常传递:
def abc():
print(xxx)
def bcd():
try:
print('11111')
abc() ============> 调用此函数的动作不会出错,但此函数内部的print(xxx)会出错,这样的异常也可以捕获到(即异常捕获支持递归)
except Exception:
pass
# 自定义异常:
class zidingyiyichang(Exception):=========>异常就是一个类,但类要当异常使的话要记得继承Exception。
def __init__(self,length,atleast)
self.length = length
self.atleast = aatleast
try:
x = input('请输入一个字符串')
if len(x) < 3:
raise zidingyiyichang(len(x),3)===========>主动抛出异常语法。
except zidingyiyichang as result:
print('zidingyiyichang:输入的长度是%d,长度至少应是%d'%(result.length,result.atleast))
# 异常处理中抛出异常:
try:
print(10/0)
except:
raise =========>在捕获异常后的处理过程中再将异常抛出,raise后面不跟异常名字则抛出的是捕获到的异常。