Python<2>异常基础_wangxiaobupt的博客-程序员宅基地

技术标签: python  【Python】  Learning Python  

在Python中异常通常可以用于各种用途,下面是最常见的几种。

<1>错误处理

每当运行时检测到错误,Python的默认异常处理行为将启动(停止程序,打印错误信息)。如果不想启动这种默认

行为,就要写try语句捕捉异常并从异常中恢复。当检测到错误是,Python会跳到try处理器,程序在try之后会接着

续运行

<2>事件通知

发出有效状态的信号

<3>特殊情况处理

很难调整代码去处理的问题

<4>终止行为

<5>非常规流程控制

异常是一种高级的“goto”

 

捕获异常

try:

    List[99]=0 #越界数组

except IndexError:

    print "index error"

print "end"


 


 

结果:

index error

end

出现特定的异常会自动跳到except后执行处理,之后接着继续运行。

 

 

引发异常

try:

    raise IndexError

except IndexError:

    print"index error"


如果没有捕捉到异常,用户定义的异常就会触发,传给异常处理器。  

 

 

用户自定义异常。它继承自一个内置的异常类Exception。

class Bad(Exception)
    pass

def doomed():

    raise Bad()

try:

    doomed()

except Bad:

    print"got Bad"


 

终止行为

try:

    代码1

finally:

    代码2

 

同except的区别就是无论代码1是否发生异常,代码2都会执行  

 

完整代码:

try:
    ...
except exception1:
    ...
except exception2:    ...except:
    ...
else:
    ...
finally:
    ...

如果try中没有异常,那么except部分将跳过,执行else中的语句。

finally是无论是否有异常,最后都要做的一些事情。

流程如下,

try->异常->except->finally

try->无异常->else->finally


 如果try中有异常发生时,将执行异常的归属,执行except。异常层层比较,看是否是exception1,exception2...,直到找到其归属,执行相应的except中的语句。如果except后面没有任何参数,那么表示所有的exception都交给这段程序处理。如果无法将异常交给合适的对象,异常将继续向上层抛出,直到被捕捉或者造成主程序报错。比如下面的程序

def test_func():
    try:
        m = 1/0
    except NameError:
        print("Catch NameError in the sub-function")

try:
    test_func()
except ZeroDivisionError:
    print("Catch error in the main program")

 
 

 

参考<<learning python>>

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wxwd1/article/details/25338473

智能推荐

在苹果Mac上怎样创建新的钥匙串?_mac新建应用程序钥匙串密码_糊涂虫666的博客-程序员宅基地

除了Mac上的默认登录钥匙串之外,您还想创建一个新的钥匙串吗?钥匙串是Apple的内置密码管理功能,可在macOS和iOS设备上使用,可让您安全地存储登录信息,从而不必记住所有密码。话虽这么说,但您当然不仅限于使用为您创建的默认钥匙串。可以在几秒钟内在macOS系统上创建一个新的附加钥匙串。1.单击位于桌面右上角的“放大镜”图标以访问Spotlight搜索。2.在搜索字段中键入“ Keychain”,然后从搜索结果中打开“ Keychain Access”。3.在菜单栏中单击“文件”,然后从下拉菜_mac新建应用程序钥匙串密码

Go语言goroutine分析_go goroutine分析_stevsun的博客-程序员宅基地

Goroutine是Go里的一种轻量级线程——协程。相对线程,协程的优势就在于它非常轻量级,进行上下文切换的代价非常的小。对于一个goroutine ,每个结构体G中有一个sched的属性就是用来保存它上下文的。这样,goroutine 就可以很轻易的来回切换。由于其上下文切换在用户态下发生,根本不必进入内核态,所以速度很快。而且只有当前goroutine 的 PC, SP等少量信息需要保存。在..._go goroutine分析

Nessus:测试web系统是否存在xss漏洞_20190228_七侠镇莫尛貝_nessus web application tests_七侠镇莫尛貝大侠2023的博客-程序员宅基地

1.Nessus安装过程:参考:https://blog.csdn.net/n994298535/article/details/848553822.做一个简单的存在xss漏洞的web应用。访问地址:http://192.168.100.230:41580/xss参考:https://blog.csdn.net/u012114090/article/details/81070214..._nessus web application tests

面向对象多继承_面相对象 多继承举例_wo_renfanzi的博客-程序员宅基地

Python2.7继承流程经典类和新式类,从字面上可以看出一个老一个新,新的必然包含了跟多的功能,也是之后推荐的写法,从写法上区分的话,如果 当前类或者父类继承了object类,那么该类便是新式类,否则便是经典类。经典类和新式类 经典类(当未继承object时):#深度优先class Bar: def f1(self): print("BAR")c_面相对象 多继承举例

聊聊怎么在32位系统上装64位系统,解决32位安装64位系统不兼容问题_32位系统怎么装64位镜像_没有梦想-何必远方的博客-程序员宅基地

没装过的不知道,但是如果真遇到了这个问题,是非常头痛的。因为64位文件在32位系统上不兼容,而系统默认这个64位镜像位普通文件了。由于刚刚在自己笔记本上装完了,就跟大家分享一下经验吧。我的本本原来是32位win8的,想直接装成64win8.1的。从网上查到一个人说如果要装win7的可以下两个系统,一个32位一个64位,要求是这两个系统版本要一致,就是说如果是旗舰版都要是旗舰版的,然后_32位系统怎么装64位镜像

随便推点

大数据入门:Hadoop安装、环境配置及检测_windows怎么看hadoop环境变量成功没有_落落free的博客-程序员宅基地

文章目录1.导包Hadoop包2.配置环境变量3.把winutil包拷贝到Hadoop bin目录下4.把Hadoop.dll放到system32下5.检测Hadoop是否正常安装5.1在maven项目中检测,将配置文件放入resource包下5.2然后通过一个简单的wordcount程序检测Hadoop是否安装成功5.3保存好之后,写程序:5.4最后我们打开输出文件查看:6.容易出现的错误:6..._windows怎么看hadoop环境变量成功没有

排队论模型(七):排队系统的优化_排队论获取最佳服务台数_wamg潇潇的博客-程序员宅基地

排队论模型(一):基本概念、输入过程与服务时间的常用概率分布排队论模型(二):生灭过程 、 M / M /s 等待制排队模型、多服务台模型排队论模型(三):M / M / s/ s 损失制排队模型排队论模型(四):M / M / s 混合制排队模型排队论模型(五): 有限源排队模型、服务率或到达率依赖状态的排队模型排队论模型(六):非生灭过程排队模型、爱尔朗(Erlang)排队..._排队论获取最佳服务台数

java迭代器删除元素出异常_java迭代器移除元素出现并发修改异常的原因及解决..._果酱味的博客-程序员宅基地

迭代器(Iterator的对象)主要用于遍历集合,体现的就是迭代器模式。Iterator接口定义了以下四种方法。boolean hasNext():如果集合还没遍历完就返回true。Object next():返回集合里的下一个元素。void remove():删除集合里上一次next方法返回的元素。void forEachRemaining(Consumer action):这是java8新增的..._为什么迭代器remove会抛异常

在Navicat中如何创建视图_navicat创建视图_逢考必过2333的博客-程序员宅基地

新建数据库打开数据库连接之后,点击“新建数据库”输入新建的数据库名、字符集和排序规则,点击确定。选中新建好的数据库,右键“打开数据库”。使用sql语言建表打开数据库后,点击左上角的“新建查询”,在弹出的空白页面处码上新建表的sql语句,之后点击运行按钮。结果框显示新建表成功。 选中表右键,点击“刷新”按钮,在图形界面中显示“product”表创建成功。..._navicat创建视图

他年我若为青帝--评IT巨头--之联想_mangran32的博客-程序员宅基地

人类生活分物质,精神,信息。前两者世人皆知。信息产生认知,这段时间我会将从大二开始两年来从百度,google,csdn三**息渠道得到的**息提取,做一个总结。从普通IT学生角度来观察总结,几乎会谈到国内的所有IT大头和国外一小部分。今天我要说的就是联想。 联想是我国PC的大头,我不专指联想,世界PC大头也一样。我若是联想掌门人,绝不会现在这样去做鸡肋的网络应用。这个读者自己去了解,联想

creo 计算机配置,操作方法:Creo WebLink脚本运行环境设置_安心小鱼的博客-程序员宅基地

WebLink是Creo提供的脚本辅助开发环境. 您可以在Creo的内置浏览器中使用JavaScript脚本来控制Creo的操作. 在使用脚本之前,您需要相应地设置Creo的环境变量和浏览器.1. Creo环境变量设置首先,将Creo变量web_enable_javascript设置为on,以允许脚本运行. 如果需要通过脚本执行文件操作,则还应将web_link_file_read和web_li..._creo浏览器设置

推荐文章

热门文章

相关标签