Python(七) 异常和模块

第七章 异常和模块

异常定义:

  1. 异常是指程序中的例外,违例。影响程序正常执行的情况。
    异常机制是指程序出现错误后,程序的处理方法。
  2. 当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理。
    如果程序执行过程中发生了异常,我们没有进行异常处理。那么,程序就会中止执行下面的代码。如果我们进行了异常处理,程序会继续执行下面的代码
    try:
    <语句> #可能发生异常的代码
    except<名字>:
    <语句>#如果在try部分引发了’name’异常
    except<名字>as<异常参数>:
    <语句>#如果引发了’name’异常,获得附加的异常对象
    else:
    <语句>#如果没有异常发生

异常工作原理
try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记。当异常出现并捕获后继续执行后续的代码,try字句先执行,接下来会发生什么依赖于执行时是否出现异常。

1.如果当try的语句执行时发生异常,python就跳出try并执行第一个匹配该异常的except字句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)
2.如果在try后的语句里发生了异常,却没有匹配到except字句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)
3.如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
4.不管执行try语句是否发生异常,都将会执行finally语句块的语句。(如果有的话)
注意:捕获异常中可以再嵌套捕获异常,直到不会有新的异常发生为止。

except不带任何异常类型
1.except可以不带参数,表示捕获所有的异常;
2.except加了特定的参数,表示捕获特定的异常。
3.except参数可以有多个,每个参数间用逗号分隔

except带多种异常类型
可以使用一个except语句来处理多个类型异常,也可以针对不同的异常,分别写一个except语句。
try:

可能发生异常的代码

except(Exception1,[Exception2[,…ExceptionN]]):

如果发生了任何异常列表中发生的异常,将会执行这里的代码

else:

如果没有发生异常将会执行这里的代码

try –finally/else语句

  1. 在try块中抛出一个异常,程序会立即执行finally块代码(如果有的话)。当finally块中的所有代码被执行结束后,异常才会被再次提出,并执行except块代码。
  2. finally和else语句块可以同时存在。如果发生异常只执行finally语句块,否则两语句块都会执行。

异常参数
一个异常可以带上参数,可作为输出的异常信息参数。通过except语句来捕获异常的参数。
异常参数接受的异常值通常包含在异常的语句中。在元组的表单中可以接收一个或者多个值。元组通常包含错误字符串,错误数字,错误位置。
触发异常
Python中使用关键字raise来自己触发异常。
自定义异常
通过创建一个新的异常类,程序可以创建它们自己特定的异常。自定义异常都需要继承异常基类(Exception类),当然也可以继承具体的异常类(例如RuntimeError),通过直接或者间接的方式
异常抛出机制

  1. 如果在运行时发生异常,解释器会查找相应的处理语句。(称为handler)2.
  2. 上层回调。如果当前无法处理,会将异常传递给上层的调用函数。
  3. 最外层还没找到的话,会打印traceback以便于让用户找到错误发生的原因。
    Reload 在不终止Python程序的情况下,重新导入模块文件内容的方法
    With 语句和断言

第二部分 模块

命名空间和作用域
标识符 变量是拥有匹配对象的名字。
命名空间 是一个包含了变量名称(键)和它们各自相应的对象的字典
全局变量在 函数内赋值 必须使用global关键字,声明该变量为全局变量。否则就会被认为是局部变量而重新开辟一段空间。

导入模块
Import 导入整个模块内容
Import module1,module2
使用import 可以一次性导入多个模块,模块间以逗号分隔
导入模块 from… import …
PythonPath
环境变量,PythonPath由装在一个列表里的许多目录组成

Globals()和locals函数
Globals()和locals()函数可被用来返回全局和局部命名空间里的名字

你可能感兴趣的:(Python(七) 异常和模块)