Python黑帽编程2.7 异常处理

职业导航 2026-01-16 09:47:32 92


Python黑帽编程2.7异常处理

异常是个很宽泛的概念,如果程序没有按预想的执行,都可以说是异常了。遇到一些特殊情况没处理会引发异常,比如读文件的时候文件不存在,网络连接超时。程序本身的错误也可以算作异常,比如把字符串当整数来处理,拼写错误。

不论是系统还是框架,都会对基本异常进行分类,比如IO异常,内存溢出等等。很多时候,针对特有的业务,我们也可以自定异常。

下面我们先看一个引发异常的例子:

Print'hello'

这个例子很简单,我们将print的首字母大写。这会引发一个错误:


图2

我们可以观察到有一个SyntaxError被引发,并且检测到的错误位置也被打印了出来。捕获错误,打印错误信息,这本身就是一种异常处理。那么我们如何在代码中处理异常呢?

2.7.1TRY….EXCEPT

例如我们用如下代码去打开文件:

open('','r')

但是要打开的文件并不存在,这个时候程序就会抛出异常,如下图所示:


图3

我们看到抛出的错误为IOError,那么我们可以使用如下的代码来处理这个异常。

try:

open('','r')

exceptIOError,msg:

printmsg

运行结果如下:


图4

我们把所有可能引发错误的语句放在try块中,然后在except从句中处理所有的错误和异常。except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理所有的错误和异常。对于每个try从句,至少都有一个相关联的except从句。

例如:

try:

open('','r')

exceptIOError,msg:

printmsg

except:

print'othererro'

如果某个错误或异常没有被处理,默认的Python处理器就会被调用。它会终止程序的运行,并且打印一个消息,我们已经看到了这样的处理。

2.7.2抛出异常

我们可以使用raise语句引发异常。你还得指明错误/异常的名称和伴随异常触发的异常对象。我们可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。

我们先看示例代码:

Otherworkcancontinueasusualhere

exceptEOFError:

print'\nWhydidyoudoanEOFonme?'

exceptShortInputException,x:

print'ShortInputException:Theinputwasoflength%d,\

wasexpectingatleast%d'%(,)

else:

print'Noexceptionwasraised.'

这段代码中我们首先自定义了一个ShortInputException类,它继承自Exception类,构造函数接受两个参数输入字符串的长度和最小长度。接下来代码中,我们获取用户输入,判断长度是否小于3,如果小于3触发ShortInputException。我们从终端启动这个脚本,运行结果如下:


图5

2.7.3TRY..FINALLY

当我们需要不管是否有异常,都要执行某段代码的时候,就需要finally出场了。看下面的示例:

deftest1():

try:

print('todostuff')

raiseException('hehe')

print('toreturnintry')

return'try'

exceptException:

print('processexcept')

print('toreturninexcept')

return'except'

finally:

print('toreturninfinally')

return'finally'

test1Return=test1()

print('test1Return:'+test1Return)

在try中raise一个异常,就立刻转入except中执行,在except中遇到return时,就强制转到finally中执行,在finally中遇到return时就返回。运行结果如下:


图6

2.7.9小结

本节我们学习了Python中基本的异常处理,和自定义异常的方法。

下一节我们学习套接字编程。

查看系列教程,请

本文地址:https://yjs.zzxfkm.com.cn/417634579362.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

二战考生到底该不该冲击名校?(Day50)

2025年高考英语易错题分类汇总:易错点27 读后续写

美国留学必须学会的“看病”英语

母亲节(Mother's Day)

澎湃思想周报|罗琳与跨性别群体之争;以色列吞并西岸计划

浙江湖州援疆指挥部开展送医下乡活动[中国网.援建新疆]浙江

新疆人的一天 | 为民节约20万的何曲夫妇

关于中国风,我有一句妈卖批必须要讲

友情链接

备案号:辽ICP备12008537号

网站地图