Python抛出异常详解

PythonLearn

Python抛出异常【1】

 程序运行过程中 Python解释器遇到一个错误 会停止程序的运行 并且提示一些错误信息 这个 就是异常
程序停止并且提示错误信息的动作叫做抛出异常

抛出异常原因

	主动捕获异常 可以增加健壮性

抛出异常的种类

  1. AssertionError ,断言失败抛出异常;
  2. AttributeError ,找不到属性抛出异常;
  3. ValueError , 参数值不正确(类型正确);
  4. WindowsError/(OSError,IOError,EnvironmentError),I/O相关错误
  5. UnicodeError,ValueError的子异常,编码错误
  6. UnicodeDecodeError UnicodeError的子异常 编码,解码错误
  7. UnicodeEncodeError UnicodeError的子异常 编码,编码错误
  8. UnicodeTranslateError UnicodeError的子异常 编码,翻译错误
  9. ConnectionError OSError子异常,连接错误
  10. BrokenPipeError ConnectionError 子异常 连接管道错误
  11. ArithmeticError 算术错误的基类
  12. ZeroDivisionError 算数错误的子类,除法或模运算的第二个参数是零
  13. BufferError 缓冲区错误
    注意 如果不确定需要打印异常种类 只是单纯不想让程序暂停 可以使用基类Exception 但是 Python中不推荐使用这种方法

抛出异常的格式

1.基本语法

try:
    num = int(input("请输入一个数字:"))
    print(num)
except ValueError as e:
  print(e)
finally:
 print("抛出异常")

2.解析
关键字try 以及except是 使用Python 解释器主动抛出异常的关键,
Python解释器从上向下执行 当运行try中的某行代码出错,会直接进入except中执行下方代码 try中错行下方的代码不会被运行
except…as… 是固定的语法格式 打印traceback信息
finally 后的代码不管是否抛出异常都会执行
except 的原理 调用sys中 exc.info 方法返回基本信息 所以抛出异常的第一步拓展可以在这里开始
注意 每个关键字下方的代码都是独立的(所有的变量都是局部变量)

基本拓展:sys.exc.info

1.初步拓展

try:
    num = int(input("请输入一个数字:"))
    print(num)
except ValueError as e:
    exc_type, exc_value, exc_traceback_obj = sys.exc_info()
    print(exc_type) # 异常的类型
    print( exc_value) # 异常的值
    print(exc_traceback_obj)	#异常的对象 返回堆栈的位置 内存地址
    

在一般情况下 基本的抛出异常已经足够使用 但是 不排除特殊情况 比如说日志输出等场景 这种场景可能需要进一步的拓展异常的抛出 具体的方法会再下一章进行详细的记录…

你可能感兴趣的:(Python,基础,python)