# 普通异常
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后面不跟异常名字则抛出的是捕获到的异常。