try/except/finally
Python也不例外,跟其他高级语言一样,内置了一套try...except...finally...的错误处理机制
	当认为某些代码可能会出错时,就可以用try来运行这段代码
使用try时,要么except和finally至少要有一个存在,否则会无法通过编译
捕获异常的意义在于,可以阻止程序意外中止,或以预想的方式中止,如果不捕获异常,错误会被解释器捕获,那么程序也就中止了
try...except...finally...机制
  如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块
	  如果有finally语句块,执行完except后,则执行finally语句块,至此,执行完毕
	  不管有没有报错,finally下的语句都一定会被执行
try:
......
except ZeroDivisionError as e:
print('except:', e)
finally:
print('finally...')
错误的继承
  Python的错误其实也是class,所有的错误类型都继承自BaseException
	  所以在使用except时需要注意的是,它不但捕获该类对应的错误,还会捕获其子类对应的错误
  比如AError是BError的父类,如果except AError在先,except BError在后,
	  但若错误被except AError捕获,且该错误也属于BError,则该错误不会被except BError所捕获
  Python所有的错误都是从BaseException类派生的
	  常见的错误类型和继承关系请参照链接:https://docs.python.org/3/library/exceptions.html#exception-hierarchy
try:
......
except ValueError as e:
print('ValueError')
except UnicodeError as e:
#第二个except永远也捕获不到UnicodeError,因为UnicodeError是ValueError的子类,如果有,也被第一个except给捕获了
print('UnicodeError')
跨越多层调用
  使用try...except捕获错误还有一个巨大的好处,就是可以跨越多层调用
	  比如函数main()调用bar(),bar()调用foo(),如果foo()出错,则只要main()捕获即可
	  无需在每个可能出错的地方去捕获错误,只要在合适的层次去捕获错误即可,因此大大减少了写try...except...finally的麻烦
def foo(s):
return 10 / int(s) def bar(s):
return foo(s) * 2 def main():
try:
bar('')
except Exception as e:
print('Error:', e)
finally:
print('finally...')
随机推荐
- u-boot简单学习笔记(三)——AR9331 uboot启动分析
			
1.最开始系统上电后 ENTRY(_start)程序入口点是 _start 由board/ap121/u-boot.lds引导 2._start: cpu/mips/start.S 是第一个源程序文 ...
 - ObjectARX学习笔记(三十二)----怎样设置AcDbMText对齐方式
			
//_T("\\pxql;") 居左 //_T("\\pxqr;") 居右 //_T("\\pxqc;") 居中 //_T("\\ ...
 - app发布流程
			
在app上架之前做两件事(instruments,profile): 1.代码静态分析:不用运行程序,直接检测代码有没有潜在的一些内存泄漏 2.动态分析:a l loctions/leaks 内存溢出 ...
 - SpringMvc參数的接受以及serializeArray的使用方法
			
需求:从页面提交一个table中的数据到后台,通经常使用于批量改动 把全部的数据到放到 input属性中,设置name定义成为对象的相关属性,使用Jquery的serializeArray这种方法封装 ...
 - Notepad++文本编辑器 快捷键
			
Ctrl+C 复制Ctrl+X 剪切Ctrl+V 粘贴Ctrl+Z 撤消Ctrl+Y 恢复Ctrl+A 全选Ctrl+F 键查找对话框启动Ctrl+H 查找/替换对话框Ctrl+D 复制并粘贴当行 C ...
 - IE兼容模式
			
何为兼容模式 这个和IE的发展历程相关,在IE8之前Browser基本上属于IE一家独大,然后ie就有很多与web standard不一致的地方,比如只有自己才看得懂的tag等.后来由于chrome, ...
 - 初探linux子系统集之led子系统(二)【转】
			
本文转载自:http://blog.csdn.net/eastmoon502136/article/details/37606487 巴西世界杯,德国7比1东道主,那个惨不忍睹啊,早上起来看新闻,第一 ...
 - dedecms获取顶级栏目名称、二级栏目名称实现方法
			
织梦DEDECMS文章.栏目页获取当前页面顶级栏目名称的方法 在用织梦做一些项目时,时常会碰到需要在当前页面调用顶级栏目名称的时候,织梦默认{dede:field name='typename' /} ...
 - poj  1860 Currency Exchange  解题报告
			
题目链接:http://poj.org/problem?id=1860 题目意思:给出 N 种 currency, M种兑换方式,Nick 拥有的的currency 编号S 以及他的具体的curren ...
 - codeforces   443 B. Kolya and Tandem Repeat    解题报告
			
题目链接:http://codeforces.com/contest/443/problem/B 题目意思:给出一个只有小写字母的字符串s(假设长度为len),在其后可以添加 k 个长度的字符,形成一 ...