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)