异常

定义:异常是指在语法逻辑正确的前提下,出现的问题。在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
#我肯定会被执行的
 
原文地址:https://www.cnblogs.com/wjw2018/p/10515820.html