一. python错误处理

一. 错误处理

异常处理
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
格式:
try :
     语句1
except 错误代码 as e:
    语句2

except 错误代码 as e:
    语句3
......
except 错误代码 as e:
    语句n
else:

    语句e
    
注意  else 可有可无

作用: 用来检测try 语句块的错误  从而让except语句捕获异常信息并处理

逻辑: 当程序执行到try ---except --else 语句时

1  如果try 语句1 执行出现错误 会匹配第一个错误码 如果匹配上就执行 语句

2 如果当try 语句1 执行出现错误  没有匹配的异常 错误将会 被提交到上一层的try 语句 或者到程序的最上一层

3 如果当try 语句1 执行没有出现错误 执行else 下的语句e
try:
    print(3/1)
except NameError as e:
    print("没有改变量")
except ZeroDivisionError as e:
     print("除数为0")
else:
    print("代码没有问题了")
print(".....................................")

# 使用except 而不使用 任何的错误类型
try:
    print(4/0)
    print(num)
except:
    print("程序出现了异常")
# 使用except带有多种异常
try:
   print(5/0)
except(NameError,ZeroDivisionError)
print("出现了NameError或‘ZeroDivisionError")  
以上例子不管 try 子句里面有没有发生异常,finally 子句都会执行。
如果一个异常在 try 子句里(或者在 exceptelse 子句里)被抛出,
而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出。
下面是一个更加复杂的例子(在同一个 try 语句里包含 exceptfinally 子句):

格式:

try :
     语句1
except 错误代码 as e:

    语句2

except 错误代码 as e:

    语句3

......
except 错误代码 as e:

    语句n
finally:

    语句f
    
作用 :语句t无论是否有错误 都讲执行最后的语句f

try: 
    print(1/0)

finally:

    print("必须执行我")
# Exception  万能异常处理

try:
    print("1")
    1/0
    name
    2+'3'
    []['K']
except Exception:
    print("错了")
异常名称    描述
BaseException    所有异常的基类
SystemExit    解释器请求退出
KeyboardInterrupt    用户中断执行(通常是输入^C)
Exception    常规错误的基类
StopIteration    迭代器没有更多的值
GeneratorExit    生成器(generator)发生异常来通知退出
StandardError    所有的内建标准异常的基类
ArithmeticError    所有数值计算错误的基类
FloatingPointError    浮点计算错误
OverflowError    数值运算超出最大限制
ZeroDivisionError    除(或取模)零 (所有数据类型)
AssertionError    断言语句失败
AttributeError    对象没有这个属性
EOFError    没有内建输入,到达EOF 标记
EnvironmentError    操作系统错误的基类
IOError    输入/输出操作失败
OSError    操作系统错误
WindowsError    系统调用失败
ImportError    导入模块/对象失败
LookupError    无效数据查询的基类
IndexError    序列中没有此索引(index)
KeyError    映射中没有这个键
MemoryError    内存溢出错误(对于Python 解释器不是致命的)
NameError    未声明/初始化对象 (没有属性)
UnboundLocalError    访问未初始化的本地变量
ReferenceError    弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError    一般的运行时错误
NotImplementedError    尚未实现的方法
SyntaxError    Python 语法错误
IndentationError    缩进错误
TabError    Tab 和空格混用
SystemError    一般的解释器系统错误
TypeError    对类型无效的操作
ValueError    传入无效的参数
UnicodeError    Unicode 相关的错误
UnicodeDecodeError    Unicode 解码时的错误
UnicodeEncodeError    Unicode 编码时错误
UnicodeTranslateError    Unicode 转换时错误
Warning    警告的基类
DeprecationWarning    关于被弃用的特征的警告
FutureWarning    关于构造将来语义会有改变的警告
OverflowWarning    旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning    关于特性将会被废弃的警告
RuntimeWarning    可疑的运行时行为(runtime behavior)的警告
SyntaxWarning    可疑的语法的警告
UserWarning    用户代码生成的警告
""
try:
    print(3/1)
except NameError as e:
    print("没有改变量")
except ZeroDivisionError as e:
     print("除数为0")
else:
    print("代码没有问题了")
print(".....................................")



# 使用except 而不使用 任何的错误类型
try:
    print(4/0)
    print(num)
except:
    print("程序出现了异常")
# 使用except带有多种异常



try:
   print(5/0)
except(NameError,ZeroDivisionError):
         print("出现了NameError或‘ZeroDivisionError")

 

posted @ 2019-05-14 23:41  supreme9999  阅读(271)  评论(0编辑  收藏  举报