python编程进阶之异常处理用法实例分析
在Python编程中,代码中常常会出现错误。例如,当我们试图读取一个不存在的文件时,会得到一个FileNotFoundError。当我们访问一个不存在的索引时,会得到一个IndexError。这样的错误会导致程序终止运行。
为了避免这样的问题,可以使用异常处理语句来捕获这些错误。Python中的异常处理分为try、except、finally三个关键字。
try语句
try语句是Python中的异常处理语句。它可以在代码块中识别可能出现异常的代码,并在异常出现时执行相应的处理程序,从而避免程序因异常而终止。
try语句有以下的语法:
try:
# 可能出现异常的代码
except 异常类型1:
# 处理异常类型1的代码
except 异常类型2:
# 处理异常类型2的代码
...
else:
# try语句中没有出现异常时执行的代码
finally:
# 无论是否出现异常都会执行的代码
在该语法中,try语句后面的代码块是可能出现异常的代码块。如果try语句块中的代码没有出现异常,else块中的代码会被执行。如果出现异常,try语句会从exception1开始顺序匹配异常类型,找到第一个与异常类型匹配的except语句,并执行其中的代码。如果没有找到与异常类型匹配的except语句,异常会被传递到下一层的try语句。如果最终异常没有被捕获,会导致程序的结束。
finally块中的代码会无论是否出现异常都会执行。常用于清理工作,例如关闭文件或网络连接。
except语句
except语句是try语句中的异常处理模块。它可以捕获try语句中抛出的异常,并在异常出现时执行相应的处理程序,例如输出错误信息、记录日志或重新尝试执行当前操作等。
语法如下:
try:
# 可能出现异常的代码
except 异常类型1:
# 处理异常类型1的代码
except 异常类型2:
# 处理异常类型2的代码
...
except语句中可以用as关键字给异常起一个别名,并在代码中使用该别名访问异常对象的属性。
示例1:捕获FileNotFoundError异常
以下代码演示了如何使用try-except语句捕获可能出现的FileNotFoundError异常:
try:
f = open('file.txt', 'r')
except FileNotFoundError:
print('文件不存在')
else:
data = f.read()
print(data)
f.close()
在该代码中,我们使用try语句包含打开文件的操作。如果文件不存在,会抛出FileNotFoundError异常,这时except语句会被调用,代码段”文件不存在”会被输出。如果文件存在,else语句会被执行,文件内容会被读取并输出,最后我们使用f.close() 关闭文件。
示例2:自定义异常类
我们也可以自定义一个异常类,在程序中使用raise语句手动抛出异常。例如,以下代码演示了如何自定义一个异常类,并在程序中使用它:
class MyException(Exception):
def __init__(self, message):
self.message = message
def __str__(self):
return self.message
try:
x = -1
if x < 0:
raise MyException('x不能小于0')
except MyException as e:
print(e)
else:
print('x大于等于0')
该代码中,我们自定义了一个异常类MyException,并在类的构造函数中初始化异常信息。在try语句中,我们手动抛出了MyException异常,并在except语句块中处理了该异常。如果x小于0,会抛出异常,并输出”x不能小于0″。如果x大于等于0,else语句块会被执行,输出”x大于等于0″。
以上就是关于Python异常处理的详细介绍。异常处理是Python编程中十分重要的知识点,在实际开发中需要仔细掌握。