异常处理

异常处理:

Trackback:异常的追踪信息

NameError:异常类

name ‘a’ is not defined:异常值

 python中一个异常标识一种错误

异常类:

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:一般的解释器系统错误

异常处理:(提供异常处理机制来增强代码的健壮性与容错性)

python解释器检测到错误,触发异常,也允许程序员自己触发异常,程序员自己编写代码,捕获异常,如果捕获异常,则跳转执行相应的处理异常代码的程序,使程序不会崩掉,这是异常处理。

异常是由程序的错误引起的,语法上的错误和异常处理无关,需要在程序运行前处理好。

异常处理:程序出错前的异常处理 程序出错后的处理异常

 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:相对安全,程序不容易崩溃

 
原文地址:https://www.cnblogs.com/gl-gl/p/9231821.html