一、问题
异常处理是Python中一种用于处理程序运行时错误的机制。在编写代码时,可能会出现各种不可预测的情况,例如除零错误、文件不存在、网络连接问题等等。为了确保程序能够在出现错误时正常运行,您可以使用异常处理机制来捕获和处理这些异常。Python中的异常处理使用try
和except
语句来实现。
二、try/except
捕获指定异常
try:# 可能引发异常的代码result = 10 / 0 # 除零错误
except ZeroDivisionError:# 处理异常的代码print("除零错误发生")
在这个示例中,try
块中包含可能引发异常的代码,如果发生除零错误,将会触发ZeroDivisionError
异常,然后控制流将转移到except
块中,其中包含了处理异常的代码。
捕获所有异常
try:# 可能引发异常的代码result = 10 / 0 # 除零错误
except:# 处理异常的代码print("异常发生")
在这个示例中,try
块中包含可能引发异常的代码,如果发生异常错误,然后控制流将转移到except
块中,其中包含了处理异常的代码。
捕获多个指定异常
try:<语句>
except (<异常名1>, <异常名2>, ...):print('异常说明')
在这个示例中,一个 except 同时处理多个异常,不区分异常的优先级且对所有类型的异常采取同样的处理。
或
try:<语句>
except <异常名1>:print('异常说明1')
except <异常名2>:print('异常说明2')
except <异常名3>:print('异常说明3')
在这个示例中,执行 try 下的语句,如果引发异常,则执行过程会跳到第一个 except 语句。如果第一个 except 中定义的异常与引发的异常匹配,则执行该 except 中的语句。如果引发的异常不匹配第一个 except,则会搜索第二个 except,依次类推。
三、try/except/else
在try
和except
之间添加一个else
块,其中包含在没有异常发生时要执行的代码。
try:<语句>
except <异常名1>:print('异常说明1')
except <异常名2>:print('异常说明2')
else:<语句> # try语句中没有异常则执行此段代码
四、try/except/else/finally
在try
和except
之后添加一个finally
块,其中包含无论是否发生异常都要执行的代码。
str1 = 'hello world'
try:int(str1)
except IndexError as e:pass
except KeyError as e:print(e)
except ValueError as e:print(e)
else:print('try内没有异常')
finally:print('无论异常与否,都会执行我')
五、抛出自定义异常try/raise
自定义抛出异常
try:age = int(input("请输入年龄:"))if age < 0:raise ValueError("年龄不能为负数")
except ValueError as e:print(e)
上述代码中,如果输入的年龄为负数,将抛出自定义的ValueError
异常。
本人读研期间发表5篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,对Python有一定认知和理解,会结合自身科研实践经历不定期分享关于python、机器学习、深度学习等基础知识与应用案例。
致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。
1、关注“数据杂坛”公众号,即可在后台联系我获取相关数据集和源码。
2、关注“数据杂坛”公众号,点击“领资料”即可免费领取资料书籍。
3、有论文指导相关需求,点击“联系我”添加作者微信直接交流。