Python-异常处理(try-except)

1. 异常处理的概念

在编程过程中,经常会出现错误。例如,文件可能不存在、网络连接可能断开、用户输入了无效的数据等等,这些错误都被称为异常。异常处理是指在程序运行过程中遇到异常时,提供能够在错误情况下继续执行的方法,而不是直接退出程序。

Python 提供了 try...except 语句来处理异常。Python 运行 try 块中的代码,如果发生异常,则跳过 try 块中的其余代码并转到 except 块。如果 try 块中没有异常,则 except 块将不会被执行。

2. 语法格式

try...except 语句的语法格式如下:

try:

# 监视的代码块

except ExceptionType:

# 发生异常时要执行的代码块

其中,try 后面跟着要被监视的代码块,ExceptionType 是指要捕获的异常类型。

3. 捕获多个异常类型

有时候,我们需要在一个 except 块中捕获多个异常类型。在 Python 中,可以用元组来进行实现:

try:

# 监视的代码块

except (ExceptionType1, ExceptionType2, ExceptionType3):

# 发生异常时要执行的代码块

这里要注意,如果捕获多个异常类型,并且这些异常类型有继承关系,那么子类异常应该放在父类异常之前。否则,将永远不会执行子类异常的代码块。

4. 捕获所有异常类型

有时候,在编写代码的时候,我们不确定会发生哪些异常。在这种情况下,可以使用以下语法捕获所有异常:

try:

# 监视的代码块

except:

# 发生异常时要执行的代码块

这里要注意,except 后面没有指定异常类型。这意味着它捕获所有类型的异常,包括系统异常、程序异常等等。

5. 捕获异常信息

可以使用 except 语句来捕获异常信息,然后在程序中进行处理。Python 中,异常信息包括异常类和异常实例(即异常的具体信息)。可以使用以下代码来获取异常信息:

try:

# 监视的代码块

except ExceptionType as e:

# 发生异常时要执行的代码块

print(e)

在这里,as 关键字用于指定异常实例的名称。在 except 块中,我们可以使用这个名称来操作异常实例。

6. finally 块

在 try...except 语句中,可以使用 finally 块,无论是否发生异常,它都会被执行:

try:

# 监视的代码块

except:

# 发生异常时要执行的代码块

finally:

# 不管是否发生异常都会被执行的代码块

finally 块通常被用来处理资源清理操作,例如关闭文件、释放网络连接等等。

7. 自定义异常

Python 也支持自定义异常。自定义异常通常用于处理特定情况下的错误。要定义异常,可以继承内置的 Exception 类或其子类。

class MyError(Exception):

def __init__(self, value):

self.value = value

def __str__(self):

return repr(self.value)

try:

raise MyError(2)

except MyError as e:

print('My exception occurred, value:', e.value)

在这里,我们自定义了一个异常类 MyError。在程序运行时,raise 语句将抛出 MyError 异常,然后 except 块捕获并处理这个异常,并打印出异常信息。

8. 小结

异常处理是编程中不可避免的部分。Python 提供了 try...except 语句来有效地处理异常。通过学习其中的语法格式,可以更好地了解 Python 里面的异常处理机制。此外,了解如何自定义异常,可以帮助我们更好地处理特定情况下的错误。

后端开发标签