Python的异常处理:try/except/else/finally语句的使用方法
Python中的异常处理机制是一种在程序运行过程中,可以处理异常情况的一种机制。异常处理机制可以让程序更加健壮,避免代码出现不可预料的错误而导致程序崩溃。在Python中,异常处理机制的核心函数是try/except/else/finally语句。
1. try/except语句
try/except语句用于捕获异常,并执行相应的操作。try语句用于包括可能引发异常的一段代码,而except语句用于指定当异常发生时执行的操作。
语法格式:
try:
<语句块>
except <异常类型>:
<异常处理代码>
try和except之间的语句块是要执行的语句,而异常处理代码则是在引发异常时需要执行的代码。如果可以保证try语句块中不会引发异常,则except语句块中的代码不会被执行。
在except语句中使用异常类型可以指定需要捕获的异常类型。如果不指定异常类型,则except语句块中的代码将会捕获所有的异常类型。
例如:
try:
s = input("请输入字符串:")
print(s / 2)
except:
print("输入的不是字符串!")
上面的代码中,try语句块中输入一个字符串,但是except语句块中的代码会在输入的是数字时被执行,因为这时候将会出现TypeError异常。
2. else语句
else语句在try语句块没有抛出任何异常的时候执行,它应该跟在所有的except语句后面。如果没有引发异常,则会执行else语句块中的代码。
语法格式:
try:
<语句块>
except <异常类型>:
<异常处理代码>
else:
<没有异常的时候执行的代码>
例如:
try:
a = 1
b = 2
c = a + b
except:
print("程序出错了!")
else:
print("程序正常运行,结果是:{}".format(c))
上面的代码中,try语句块中计算了两个数的和,但是except语句块中的代码并没有被执行,因此else语句块中的代码得以被执行。
3. finally语句
finally语句用于无论try语句块中是否有异常,都需要执行相关代码。finally语句块中的代码会在try或except语句块中的代码执行完毕后执行。
语法格式:
try:
<语句块>
except <异常类型>:
<异常处理代码>
else:
<没有异常的时候执行的代码>
finally:
<一定会被执行的代码>
例如:
try:
f = open("test.txt", "r")
print(f.read())
except:
print("文件读取出错!")
else:
print("文件读取成功!")
finally:
f.close()
print("文件关闭!")
上面的代码中,finally语句块中的代码会在try或except语句块中的代码执行完毕后执行,这里用来关闭打开的文件。
4. 自定义异常
除了Python内置的异常类型,我们还可以自定义一些异常类型,来实现更加精细化的异常处理。
自定义异常的步骤包括:
1)定义异常类:需要继承Exception类或其子类。
2)在需要的地方引发异常:需要使用raise关键字来手动引发异常。
下面是一个自定义异常的示例:
class MyException(Exception):
def __init__(self, msg):
super().__init__(msg)
self.msg = msg
try:
raise MyException("这是一个自定义异常!")
except MyException as e:
print(e.msg)
上面的代码中,我们定义了一个叫做MyException的异常类,并继承了Exception类。在需要的地方使用raise关键字手动引发了一个MyException异常,并将异常信息传递给了异常类的构造方法。在except语句块中,我们通过e.msg来获取异常信息。
总结:Python中的异常处理机制是一种非常重要的机制,它可以帮助我们在程序运行过程中及时捕获错误并进行处理,避免程序崩溃或导致不可预料的错误。try/except/else/finally语句是Python中常用的异常处理代码结构,应该掌握好这些语句的用法。同时,也可以通过自定义异常来实现更加精细化的异常处理,提高程序的健壮性。
