python之异常处理

I.异常处理方式

异常:在运行代码过程中,遇到的所有错误 通常带Error字样

异常处理:我们对代码中所有可能会出现的异常,进行处理

(1)初级异常处理

  • 处理某个错误(e.g:FileExistsError) 
  • 处理某种类型的错误 (e.g:OSError)
  • 只要有错误就进行抓取(e.g:Exception)

(2)进一步的异常处理:不仅对错误进行抓取,而且会采取措施

(3)异常处理方式

  • try...except Exception as e( 存到变量e里面)... 找错,且处理
  • try......except....finally..... finally的作用:不管有没有犯错都会执行
  • try.....except.....else....(不常用)跟try下面的代码是一起的,如果try下面的代码没有犯错,else就会执行,反之则不会执行
try:
    监控的代码 # 用户输入;打开文件,文件不存在;发送网络请求,网络超时
    assert res == expected  # 断言,比较是否与预期结果一致
except NameError as e1:
    异常处理1
except ValueError as e2:
    异常处理2
except (KeyError,TypeError) as e3:
    异常处理3
except BaseException as e4: # 所有异常类的父类
    异常处理4
except Exception as e5: #  所有异常类型处理
    异常处理5
except: #  所有异常类型处理
    异常处理6
    raise # 释放 错误类型,可以直接返回到指定文件或报告中
else:
    # 代码没有出现异常时,执行else中的代码
finally:
    不管代码有没有出现异常都会去执行的代码 

try:监控可能出错的地方   except:错误处理

(4) 将错误写入文件

try:  # 监控可能出错的地方
     监控的代码 
except 异常类型 as e:  # 错误处理
    file = open("文件名",'a+',encoding='utf-8')   
    file.write(str(e))
    file.close()#关闭文件

(5)常见的异常类型

BaseException  所有异常的基类

SystemExit  解释器请求退出

KeyboardInterrupt   用户中断执行

Exception  常规错误的基类

StopIteration  迭代器没有更多的值

GeneratorExit  生成器发生异常来通知退出

StandardError  所有数值计算错误的基类

FloatingPointError  浮点计算错误

OverflowError  数值计算超出最大限制

ZeroDivisionError  除零

AssrttionError  断言语句失败

AttributeError  对象没有这个属性

EOFError  没有内建输入,到达EFO标记

EnvrionmentError 操作系统错误的基类

IOError  输入/输出操作失败

OSError  操作系统错误

WindowsError  系统调用失败

ImportError  导入模块/对象失败

LookupError  无效数据查询的基类

IndexError  序列中没有此索引

(6)常见的异常

  • 变量没定义:  NameError: name 'a' is not defined
  • 语法错误:  SyntaxError:invalid syntax
  • 键不存在:  KeyError
  • 没找到模块:  ModuleNotFoundError
  • 类型错误:  TypeError
原文地址:https://www.cnblogs.com/kite123/p/11672947.html