我们已经了解了Python的基本数据类型、变量和基本的逻辑控制语句,基于这些基础知识可以编写一些小程序了,但是在写程序的时候我们会发现,有时候程序并不是按我们预期的方向执行,有的直接报错,有的没有报错,却并未得到我们预期的结果。这些在Python程序运行过程中出现的错误或异常情况就是异常。为了更好地处理异常,Python提供了一些基本的异常处理方法和技巧。
- try-except语句:
try-except语句用于捕获和处理异常。代码块在try语句中运行,如果出现异常,则会跳转到except语句块,其中可以执行相应的处理逻辑。下面是一个简单的示例:
try:num1 = 10num2 = 0result = num1 / num2print(result)
except ZeroDivisionError:print("除数不能为0")
在这个例子中,我们尝试将一个数除以0。由于除数为0会引发ZeroDivisionError异常,所以会跳转到except语句块,并输出"除数不能为0"。
- try-except-else语句:
try-except-else语句在没有发生异常时执行else语句块中的代码。如果try语句块中发生异常,则不会执行else语句块。下面是一个示例:
try:num1 = 10num2 = 2result = num1 / num2
except ZeroDivisionError:print("除数不能为0")
else:print(result)
在这个例子中,由于除数不为0,所以没有发生ZeroDivisionError异常,代码会执行else语句块,并输出结果2.0。
- try-except-finally语句:
try-except-finally语句用于在无论是否发生异常时都执行finally语句块中的代码。无论是否发生异常,finally语句块都会被执行。下面是一个示例:
try:f = open("file.txt", "r")# 执行一些操作
except IOError:print("文件读取错误")
finally:f.close()
在这个例子中,我们尝试打开一个文件进行读取。如果发生IOError异常,会跳转到except语句块,并输出"文件读取错误"。无论是否发生异常,finally语句块中的f.close()都会被执行,确保文件被正确关闭。
- 异常处理中获取异常信息:
在except语句块中,可以使用as关键字将异常信息赋值给一个变量,以便进一步处理。下面是一个示例:
try:num1 = 10num2 = 0result = num1 / num2
except ZeroDivisionError as e:print("除数不能为0:", e)
在这个例子中,除数为0会引发ZeroDivisionError异常,我们将异常信息赋值给变量e,并输出"除数不能为0"和异常信息。
- 自定义异常:
除了Python提供的内置异常类型,我们还可以自定义异常。自定义异常通常继承自Exception类。下面是一个示例:
class MyCustomException(Exception):passtry:num = 10if num > 5:raise MyCustomException("数字太大了")
except MyCustomException as e:print(e)
在这个例子中,我们定义了一个自定义异常类MyCustomException,并在一定条件下手动抛出该异常。然后,在except语句块中捕获并处理这个自定义异常。
以上是Python中基本的异常处理方法和技巧的详细讲解,通过适当使用这些技巧,可以帮助我们更好地处理程序中的异常情况。这一节就到这里,大家下期再见!