Python笔记----异常

1 异常由四个语句处理

  1. try/except----捕捉由Python或你引起的异常并恢复
  2. try/finally ----无论异常是否发生,执行清理行为
  3. raise ----手动在代码中触发异常
  4. assert ----有条件地在程序代码中触发异常

2 异常的角色

  1. 错误处理
  2. 事件通知
  3. 特殊情况处理
  4. 终止行为
  5. 非常规控制流程

3 异常处理:简明扼要

  1. 默认异常处理器
  2. 捕获异常

4 try语句的分句形式

分句形式 说明
except : 捕捉所有(其他)异常类型
except name: 只捕捉特定的异常
except name,value: 捕捉所列的异常和其额外的数据(或实例)
except (name1,name2): 捕捉任何列出的异常
except (name1,name2),value: 捕捉任何列出的异常,并取得其额外数据
else: 如果没有引发异常,就运行
finally: 总是会运行此代码块

注:except Exception:… 与空的except相同,但忽略和系统退出相关的异常

5 with/as环境管理器

	基本格式:
			with expression [as variable]: with-block
   注意:expression的结果是支持环境协议的对象,variable则是赋值为其他的东西
   例如:
       with open(r'C:\misc\data') as myfile:                       
       		for line in myfile:
       			print(line)
       			...more code here...

6 环境管理协议(以下是with语句实际的工作方式)

  1. 计算表达式,所得到的对象称为环境管理器,它必须有__enter__和__exit__方法
  2. 环境管理器的__enter__方法会被调用.如果as子句存在,其返回值会赋值给As子句中的变量,否则,直接丢弃
  3. 如果with代码块引发异常,__exit__(type,value,traceback)方法就会被调用
  4. 如果with代码块没有引发异常,__exit__方法依然会被调用,其type,value以及traceback参数都会以None传递

7 内置异常类

BaseException   异常的顶级根类
Exception       与应用相关的异常的顶层根超级类.BaseException的一个直接子类
ArithmeticError 所有数值错误的超类
OverflowError   识别特定的数值错误的子类

你可能感兴趣的:(Python)