异常处理:python
Trackback:异常的追踪信息程序员
NameError:异常类安全
name ‘a’ is not defined:异常值编码
python中一个异常标识一种错误spa
异常类:操作系统
AttributeError:访问一个对象没有的属性 NameError:未声明,未初始化对象 IOError:输入输出异常,基本上是文件的打开出现错误 ImportError:没法导入模块或者包,(可能因为路径或者名称问题) IndentationError:缩进错误 IndexError:超出边界,l[1000] KeyError:访问字典中不存在的键 KeyboardInterr:CTRL+C被按 SyntaxError:非法的python代码 TypeError:传入对象类型与要求不符合 UnboundLocalError:访问一个未被设置的局部变量,基本上是由于存在一个同名的局部变量ValueError:传入一个调用者不指望的值,无效的参数 OSError:操做系统错误 ZeroDIvisionError:除零 WindowsError:系统调用失败 UnicodeError Unicode:相关的错误 UnicodeDecodeError Unicode:解码错误 UnicodeEncodeError Unicode:编码错误 UnicodeTranslateError Unicode:转换时错误 SystemError:通常的解释器系统错误
异常处理:(提供异常处理机制来加强代码的健壮性与容错性)code
python解释器检测到错误,触发异常,也容许程序员本身触发异常,程序员本身编写代码,捕获异常,若是捕获异常,则跳转执行相应的处理异常代码的程序,使程序不会崩掉,这是异常处理。对象
异常是由程序的错误引发的,语法上的错误和异常处理无关,须要在程序运行前处理好。blog
异常处理:程序出错前的异常处理 程序出错后的处理异常继承
if判断异常处理:
只能针对一段代码,对于不一样代码相同的异常类型须要写大量重复的if判断来处理,
而这些代码都与程序自己无关,令人感受可读性差
try...except异常处理:
*****************万能异常类*******
except Excetion as e: print(e) ******************多分支************* s1='hahaha'
try: int(s1) except IndexError as e: print(e) except ValueError as e: print(e) except KeyError as e: print(e) ************多分支后加Exception************* s1='hahaha'
try: int(s1) except IndexError as e: print(e) except ValueError as e: print(e) except Exception as e: print(e)
try...except + else:
若是代码块无异常,则执行else代码块
若是代码块有异常,则else代码块不执行
try...except + finally:
无论代码块有没有异常,finally代码块都会被执行
finally代码块一般是作清理工做的
*************主动触发的异常******
try: raise TypeError('类型错误') except Exception as e: print(e) ************本身定义的异常*******
class AnnException(BaseException):#本身定义的异常一般都要继承BaseException
def __init__(self,.mes): self.mes=mes
def __str__(self):
return self.mes
try:
raise AnnException('类型错误')
except AnnException as e:
print(e)
**************断言***********
def test(): res=1
return 1 r=test() assert r=1#根据r的值对下面代码进行处理
try...except的好处:
1:把错误代码和工做代码分开
2:代码易组织,更清晰,复杂工做易实现
3:相对安全,程序不容易崩溃