使用Python函数进行异常处理:try和except语句
Python是一种很流行的编程语言,它有许多强大的功能,使之成为了非常多人使用的首选语言之一。异常处理是Python程序中的一种非常重要的技能,因为在代码中,难免会遇到错误和异常情况。Python提供了多种方式来监测和处理这些问题中的异常,其中最常用的方式是使用try和except语句。
1.try和except语句
try和except语句被用于在Python程序中捕捉和处理异常。这些语句的基本结构如下:
try:
代码块
except 错误类型:
异常处理程序
在try语句代码块执行期间,如果出现了一个错误或异常,该语句会立即跳转到except语句并调用指定的异常处理程序。在处理完异常后,程序将继续向下执行,而不是终止运行。
2.捕捉异常
在Python中,可以使用except语句来捕捉并处理不同类型的异常。以下是一些常见的异常:
a. AttributeError:当试图访问未定义的对象属性时引发
b. IOError:文件读取或写入失败导致出现的异常
c. ZeroDivisionError:当试图将一个数除以0时引发
d. TypeError:当两个不同类型的对象建立连接时引发
e. ValueError:尝试对错误数据类型执行操作时出现的异常
当try语句执行期间出现异常时,Python将在当前作用域内查找 个能够处理该异常类型的except语句,并调用其中的异常处理程序。如果找不到该异常类型的处理程序,则该异常将被传递给上一层调用函数,直到找到含有该异常类型处理程序为止。如果没有找到任何处理程序,则程序将在控制台上打印出错误信息。
3.处理多个异常
在Python中,except子句可以包含多个异常类型,以便同时处理多种类型的异常。可以使用元组或者引入多个except语句的方式:
#使用元组
try:
a = 100 / 0
except (ZeroDivisionError, NameError, ValueError):
print("Error Occurred")
#使用多个except语句
try:
f = open('sample.txt', 'r')
line = f.readline()
num = int(line.strip())
except IOError:
print("File not found or path is incorrect")
except ValueError:
print("Could not convert data to an integer")
except:
print("Unexpected exception")
4.使用else子句
除了try和except语句以外,Python还提供了一个可选的else子句,用于在try语句块执行后(未发生任何异常)执行一些代码。else代码块只有在try块中没有发生异常时才会被执行。
try:
f = open("test.txt")
line = f.readline()
num = int(line.strip())
except IOError:
print("File not found or path is incorrect")
except ValueError:
print("Could not convert data to an integer")
else:
print("File opened successfully")
finally:
f.close()
5.使用finally子句
无论try语句是否成功,finally语句都将被执行。该语句用于处理清除和关闭资源,确保不管发生了什么情况,都不会泄漏资源。如果发生异常,finally语句将在所有except代码块之后执行。如果没有发生异常,finally语句在try和else语句块之后执行。
try:
f = open("test.txt")
line = f.readline()
num = int(line.strip())
except IOError:
print("File not found or path is incorrect")
except ValueError:
print("Could not convert data to an integer")
else:
print("File opened successfully")
finally:
f.close()
6.自定义异常
Python也允许用户定义新的异常类,以便更好地控制程序的异常处理流程。例如,如果要检测某个函数的输入是否超出了某个范围,则可以创建一个自定义的异常类,并在函数中抛出该异常。
class InputOutOfRangeError(Exception):
pass
def get_age():
age = int(input("Enter your age: "))
if (age < 0) or (age > 150):
raise InputOutOfRangeError("Age out of range")
return age
try:
age = get_age()
print("Your age is:", age)
except InputOutOfRangeError:
print("Error: Input out of range")
7.总结
try和except语句是Python中处理异常的主要方式。这些语句允许程序员在代码中添加特定的异常处理程序,以便在程序执行期间出现错误或异常时能够快速响应,从而避免程序崩溃。要处理多个异常,可以使用多个except语句或者使用元组。使用else语句可以在try语句中没有任何异常的情况下执行一些代码。使用finally语句可以确保资源被正确关闭和整理。最后,Python还允许程序员创建自定义异常类,从而更好地控制程序的异常处理流程。
