在 Python 中,异常处理是一个重要的机制,用于捕获和处理程序运行过程中可能发生的错误。通过异常处理,程序可以在遇到错误时采取适当的措施,而不是直接崩溃。
Python 使用 try
、except
、else
和 finally
关键字来处理异常。
try:
# 可能会引发异常的代码
pass
except SomeException as e:
# 处理特定异常的代码
pass
except AnotherException as e:
# 处理另一个特定异常的代码
pass
else:
# 如果没有引发异常,执行这部分代码
pass
finally:
# 无论是否引发异常,都会执行这部分代码
pass
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Error: {e}")
输出:
Error: division by zero
try:
result = int("abc")
except (ValueError, TypeError) as e:
print(f"Error: {e}")
输出:
Error: invalid literal for int() with base 10: 'abc'
else
子句try:
result = 10 / 2
except ZeroDivisionError as e:
print(f"Error: {e}")
else:
print(f"Result: {result}")
输出:
Result: 5.0
finally
子句try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Error: {e}")
finally:
print("This will always be executed")
输出:
Error: division by zero
This will always be executed
你可以定义自己的异常类,继承自内置的 Exception
类。
class MyCustomError(Exception):
pass
try:
raise MyCustomError("This is a custom error")
except MyCustomError as e:
print(f"Caught custom error: {e}")
输出:
Caught custom error: This is a custom error
你可以在 except
块中嵌套另一个 try
块,以处理不同层次的异常。
try:
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Inner error: {e}")
raise
except Exception as e:
print(f"Outer error: {e}")
输出:
Inner error: division by zero
Outer error: division by zero
虽然不推荐,但你可以使用 except
捕获所有异常。
try:
result = 10 / 0
except Exception as e:
print(f"Error: {e}")
输出:
Error: division by zero
try
块:包含可能引发异常的代码。except
块:处理特定异常的代码。else
块:如果没有引发异常,执行这部分代码。finally
块:无论是否引发异常,都会执行这部分代码。Exception
类来创建自定义异常。