定义:异常是指在语法逻辑正确的前提下,出现的问题。在python里,异常就是一个类
语法:
try:
尝试实现某个操作,
如果没出现异常,任务就可以完成
如果出现异常,将异常从当前代码块扔出去尝试解决异常
except 异常类型1:
解决方案1:用于尝试在此处处理异常解决问题
except 异常类型2:
解决方案2:用于尝试在此处处理异常解决问题
except (异常类型3,异常类型4...)
解决方案:针对多个异常使用相同的处理方式
excpet Exception:
解决方案:所有异常的解决方案
else:
如果没有出现任何异常,将会执行此处代码
finally:
管你有没有异常都要执行的代码
# 简单异常案例 # 给出提示信息 try: num = int(input("Plz input your number:")) rst = 100/num print("计算结果是: {0}".format(rst)) # 如果是多种error的情况 # 需要把越具体的错误,越往前放 # 在异常类继承关系中,越是子类的异常,越要往前放, # 越是父亲类的异常,越要往后放 # 在处理异常的时候,一旦拦截到某一个异常,则不在继续往下查看,直接进行下一个 # 代码,即有finally则执行finally语句块,否则就执行下一个大的语句 except ZeroDivisionError as e: print("你特娘的输入的啥玩意儿") print(e) # exit是退出程序的意思 exit() except NameError as e: print("名字起错了") print(e) except AttributeError as e: print("好像属性有问题") print(e) exit() # 所有异常都是继承自Exception # 如果写上下面这句话,任何异常都会拦截住 # 而且,下面这句话一定是最后一个exception except Exception as e: print("我也不知道就出错了") print(e) except ValueError as e: print("NO>>>>>>>>>>>>>>>>>>")
手动引发异常:当某些情况,用户希望自己引发一个异常的时候,可以使用raise关键字来引发异常
# 自己定义异常 # 需要注意:自定义异常必须是系统异常的子类 class MyValueError(ValueError): pass try: print("我爱XXX") print(3.1415926) #手动引发一个异常 #注意语法:raise ErrorClassName #因为MyValueError是ValueError的子类所以会打印出"ValueError" raise MyValueError print("还没完呀") except NameError as e: print("NameError") except ValueError as e: print("ValueError") except Exception as e: print("有异常") finally: print("我肯定会被执行的") #我爱XXX #3.1415926 #ValueError #我肯定会被执行的