简介
当你的程序不能正常运行的时候,Python会在控制台打印一段提醒,告诉你一个错误,这个错误就是异常。
错误
我在控制台写了一段无效的代码,将print()的括号去掉,在执行这条语句的时候,系统提示语法错误,无效的语句(我百度翻译的)。这就是错误处理器所作的工作。
再换一种方式写错误:
在程序获取用户输入的时候,我们使用CTRL+d引发了一个EOFError错误,接下来我们尝试去处理这样的错误。
处理异常
使用try---except语句来处理异常。我们通常把容易产生异常的语句放置在try块中,把做异常处理的语句放在except块中。
import sys
try:
a = input('Enter something:')
except(EOFError):
print('\nWhy did you do an EOF on me "text-align: center">
我们把所有可能引发错误的语句放在try块中,然后在except从句/块中处理所有的错误和异常。except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try从句,至少都有一个相关联的except从句。
你还可以让try..catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。
import sys
try:
a = input('Enter something:')
except(EOFError):
print('\nWhy did you do an EOF on me "text-align: center">
raise引发异常
你可以使用raise语句抛出异常。你需要指明错误/异常的名称和伴随异常触发的异常对象。这个异常应该是Error和Exception类的子类。这就用到了继承的思想,使用__init__方法初始一些方法和参数。
class ShortInputException(Exception):
def __init__(self,length,atleast):
Exception.__init__(self)
self.length = length
self.atleast = atleast
try:
s = input('Enter something-->')
print(len(s))
if len(s) < 3:
raise ShortInputException(len(s),atleast = 3)
except(EOFError):
print('\nWhy did you do an EOF on me "text-align: center">
try...finally
假如在你读文件的时候发生了异常,但是无论如何文件都要关闭。这个时候该怎么做呢?
这里我们需要使用finally块来完成。
在使用try捕获异常的时候,我们可以同时使用except块和finally块。
import time
try:
f = open('poem.txt')
while True: # our usual file-reading idiom
line = f.readline()
if len(line) == 0:
break
time.sleep(2)
print(line)
finally:
f.close()
print('Cleaning up...closed the file')
运行结果
这里使用了time的sleep函数,里面的参数是它的运行间隔。
这样我们就有时间去使用CTRL+c使程序发生异常。这时候我们发现finally块中的语句还是运行的,文件正常关闭了。
简极(∞+∞=∞ ∞-∞=∞)
以上所述是小编给大家介绍的Python异常详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
南强小屋 Design By 杰米
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。



