05-python中的异常
python的所有的异常都继承自基类: Exception
处理方式和java类似:
path = raw_input('input the path') array = path.split('/') try : module = __import__('model.' + array[0]) model = getattr(module, array[0]) func = getattr(model, array[1]) func() except (ImportError, AttributeError, NameError), e: print(e) finally: print('finally to do')
多个异常的捕捉, 可以使用连续的exept或者使用括号进行捕捉
import sys try: f = open('myfile.txt') s = f.readline() i = int(s.strip()) except OSError as err: print("OS error: {0}".format(err)) except ValueError: print("Could not convert data to an integer.") except: print("Unexpected error:", sys.exc_info()[0]) raise
else :
print ('else method')
python的异常还有一个else子句, 没有任何异常的时候去执行
自定义异常:
和其他语言一样, python也可以进行自定义异常, 并且抛出;
class MyException(Exception): def __init__(self, name): self.name = name # 重写string方法 def __str__(self, *args, **kwargs): return self.name
在其他地方进行抛出的方法:
try: print('start...') raise MyException('raise exception') except MyException as err: print(err) finally: print('finally')
使用raise关键字进行抛出