python之异常处理
异常的捕获和处理
异常被抛出后,如果没有捕获处理,那么会导致当前程序的异常退出。
通过try...except...finally...这样的方式来捕获和处理异常。
try:
b = 4/0
except ZeroDivisionError:
print("handke ZeroDrivisionError")
捕获多种异常
我们可以连接好几个except代码段来分别捕获不通类型的异常,如下
try:
ohmy
b = 4/0
except ZeroDivisionError:
print("handle ZeroDivisionError")
except NameError:
print("handle NameError")
得到异常对象
有的时候,我们在捕获异常的时候得到更具体的异常信息,会这样
try:
ohmy
except NameError as e:
print(''handle NameError",e)
捕获所有异常
有的时候我们并不知道会抛出什么样的异常,但是我们并不希望有未知异常抛出的时候,程序被异常种植,这时候我们可以捕获所有类型的异常。如下:
try:
ohmy
except Exception as e:
print("handle unkown exception:",e)
如果想看到异常抛出的详细的调用栈信息可以这样写
import traceback
try:
ohmy
except:
print("handle unkown exception\n"+ traceback.format_exc())
自定义异常:
exception异常包含很多种类像 除0异常、nameerror异常 继承exception异常
class NameTooLongError(Exception): pass class NameTooShortError(Exception): pass def inputname(): name = input('请输入姓名:') if len(name) > 11: raise NameTooLongError() if len(name) < 6: raise NameTooShortError() return name try: ret = inputname() except NameTooShortError: print("name太短了!") except NameTooLongError: print("name太长了!")