环境: Python 3.6
Python异常处理和很多语言异常处理都差不多。
常见异常捕捉
- try … except … finally
索性把一些极端的处理句式给出给来 举一反三。依然是如果有异常,异常如果没有被捕捉,中断执行,finally是不会被执行的。
另外值得一提的是,python2中 except语句使用有区别于python3 。
python2: exception ErrType, ErrInfo
python3: exception ErrType as ErrInfo
一个用半角逗号隔开,一个用as隔开。后者更像其它的语言的异常处理。
1 2 3 4 5 6 7 8 9 10 11
| try: do_sth except ErrorType as e: handle_expcept_1 print("ErrorMessage:",e) except ErrorType2 as e: handle_expcept_2 else: handle_other_error finally: colse_object
|
- with … as
对于支持该语句的对象来说,用这个语句比用try...finally
更能保证对象在异常中得到期望的释放。
而支持该语句的对象必须内部实现两个方法 __enter__()
和__exit__()
.而在刚执行with语句时会触发 enter
方法,离开with语句代码块后触发exit
。所以,对象只要把释放资源的代码写在__exit__()
函数中就行了。
1 2
| with open('test.txt') as f: f.readlines()
|
- Exception 万能异常
如其名,可以用try…except Exception 捕获所有的异常