码迷,mamicode.com
首页 > 其他好文 > 详细

十、异常处理

时间:2018-05-02 17:28:05      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:定义   indent   name   lse   boa   exception   传递   代码块   else   

异常是错误发生的信号

 

一、异常分为三部分

1、异常的追踪信息

2、异常的类型

3、异常的值

 

二、异常的分类

1、语法异常

这类异常应该在程序执行前就改正

 

2、逻辑异常

AttributeError     试图访问一个对象没有的属性
IOError      输入/输出异常;基本上是无法打开文件
ImportError     无法引入模块或包;基本上是路径问题或名称错误
IndentationError      语法错误的子类;代码没有正确对齐
IndexError     下标索引超出序列边界
KeyError     试图访问字典里不存在的键
KeyboardInterrupt     ctrl+c被按下
NameError     使用一个还未被赋予对象的变量
SyntaxError     代码非法,代码不能编译
TypeError     传入对象类型与要求的不符合
UnboundLocalError     试图访问一个还未被设置的局部变量,基本上与由于另有一个同名的全局变量,导致你以为你正在访问它
ValueError     传入一个调用者不期望的值,即使值的类型是正确的

 

三、异常处理

如果错误发生的条件是可预知的,可用if判断处理,在错误发生前进行预防;
如果错误发生的条件是不可预知的,则需要用到try...except...,在错误发生之后进行处理

 

基本语法:

try:

    代码块

except 异常类型:

    代码块

 

try语句按照如下方式工作:
1、首先执行try子句(在关键字和关键字except之间的语句)
2、如果没有异常发生,忽略except子句,try子句执行后结束
3、如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try语句之后的代码
4、如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中

 

一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。
一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组

 

万能异常处理:

try:

    代码块

except Exception as 别名     #把异常的值赋值给一个别名

    代码块

 

try...else...     

else不能单独使用,必须与except连用,意思是else的子代码块会在没有任何异常的情况下执行

 

try...finally   

无论有没有异常发生都会执行,用在回收系统资源的时候

 

主动触发异常:
raise

 

断言:

assert

 

自定义异常

通过创建一个新的exception类来拥有自己的异常。异常应该继承自Exception类

 

十、异常处理

标签:定义   indent   name   lse   boa   exception   传递   代码块   else   

原文地址:https://www.cnblogs.com/Python1/p/8981288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!