python程序在运行时、如果发生异常_Python(七) 异常和模块

第七章 异常和模块

异常定义:

异常是指程序中的例外,违例。影响程序正常执行的情况。

异常机制是指程序出现错误后,程序的处理方法。

当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理。

如果程序执行过程中发生了异常,我们没有进行异常处理。那么,程序就会中止执行下面的代码。如果我们进行了异常处理,程序会继续执行下面的代码

try:

#可能发生异常的代码

except:

#如果在try部分引发了’name’异常

exceptas:

#如果引发了’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语句

在try块中抛出一个异常,程序会立即执行finally块代码(如果有的话)。当finally块中的所有代码被执行结束后,异常才会被再次提出,并执行except块代码。

finally和else语句块可以同时存在。如果发生异常只执行finally语句块,否则两语句块都会执行。

异常参数

一个异常可以带上参数,可作为输出的异常信息参数。通过except语句来捕获异常的参数。

异常参数接受的异常值通常包含在异常的语句中。在元组的表单中可以接收一个或者多个值。元组通常包含错误字符串,错误数字,错误位置。

触发异常

Python中使用关键字raise来自己触发异常。

自定义异常

通过创建一个新的异常类,程序可以创建它们自己特定的异常。自定义异常都需要继承异常基类(Exception类),当然也可以继承具体的异常类(例如RuntimeError),通过直接或者间接的方式

异常抛出机制

如果在运行时发生异常,解释器会查找相应的处理语句。(称为handler)2.

上层回调。如果当前无法处理,会将异常传递给上层的调用函数。

最外层还没找到的话,会打印traceback以便于让用户找到错误发生的原因。

Reload 在不终止Python程序的情况下,重新导入模块文件内容的方法

With 语句和断言

第二部分 模块

命名空间和作用域

标识符 变量是拥有匹配对象的名字。

命名空间 是一个包含了变量名称(键)和它们各自相应的对象的字典

全局变量在 函数内赋值 必须使用global关键字,声明该变量为全局变量。否则就会被认为是局部变量而重新开辟一段空间。

导入模块

Import 导入整个模块内容

Import module1,module2

使用import 可以一次性导入多个模块,模块间以逗号分隔

导入模块 from… import …

PythonPath

环境变量,PythonPath由装在一个列表里的许多目录组成

Globals()和locals函数

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值