欢迎访问宙启技术站
智能推送

Python的异常处理:try/except/else/finally语句的使用方法

发布时间:2023-06-23 21:53:16

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中常用的异常处理代码结构,应该掌握好这些语句的用法。同时,也可以通过自定义异常来实现更加精细化的异常处理,提高程序的健壮性。