python3异常处理

2018-09-17  本文已影响12人  test小星星

异常处理语法

try:
      里面写你觉得会出现异常的代码块
      
except 异常的类型1:
       print("如果出来了异常后所要做的处理")
except 异常的类型2:
       print("如果出来了异常后所要做的处理")
else:
       print("没有异常才会执行的功能")
finally:
       print("不管有没有异常都会执行的功能")

这样做的好处

如果使用了try,try里面的代码出现了异常只是不执行这些代码。而会继续执行后面的代码。
不会因为程序出现了异常,而导致整个程序崩溃

需要注意的几点

1、except指定的异常的类型必须和实际异常的类型一致。
2、如果想把多个异常类型写在一起可以:except (异常类型1,异常类型2):
3、如果不知道出现什么异常可以:except Exception as e:
Exception 代表不管什么异常都按这样异常处理(总异常)
4、异常的传递:如果被调用的函数或类,没做异常处理,就会传递到调用它的代码,如果掉用的代码做了异常处理就按该异常处理。

触发异常

我们可以使用raise语句自己触发异常
raise语法

raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的,如果存在,是跟踪异常对象。

实例

# 定义函数
def myexception( level ):
    if level < 1:
        raise Exception("Invalid level!")
        # 触发异常后,后面的代码就不会再执行
try:
    myexception(0)        # 触发异常
except Exception as msg: # 如果不是自己触发的异常,而是别的异常执行下面代码
    print(msg)
else:                # 如果没有异常则执行下面代码
    print('pass')
执行结果为:
Invalid level!

自定义异常

#创建一个自定义异常类,继承Exception
class Networkerror(Exception):
    def __init__(self, arg):
        self.args = arg
#使用raise 实例化自定义类
try:
    raise Networkerror("异常提示信息")
except Networkerror as msg:
    print(msg)
上一篇下一篇

猜你喜欢

热点阅读