在编程中,异常(Exception)是指程序执行过程中出现的错误或意外情况,这些错误可能会导致程序终止运行。Python 提供了异常处理机制,允许开发者在程序运行过程中捕获和处理异常,从而使程序能够优雅地处理错误而不中断。
常见的异常类型:
SyntaxError
:语法错误。IndexError
:索引超出范围错误。KeyError
:字典中不存在键错误。ValueError
:传递给函数的参数类型或值不正确。TypeError
:操作或函数应用于不支持的对象类型。try-except
语句Python 使用 try-except
语句来处理异常。try
块中的代码是可能发生异常的部分,如果发生异常,程序会跳到 except
块中进行处理,而不会终止程序。
基本语法:
try:
# 可能发生异常的代码
pass
except ExceptionType as e:
# 异常处理代码
pass
finally:
# 可选的最终执行代码,无论是否发生异常都会执行
pass
示例:
try:
result = 10 / 0
except ZeroDivisionError as e:
print("Error: Cannot divide by zero!")
finally:
print("This block is always executed.")
# 输出:
# Error: Cannot divide by zero!
# This block is always executed.
try
块:包含可能引发异常的代码。except
块:包含异常处理代码,可以指定处理特定类型的异常。finally
块:可选,无论是否发生异常,都会执行的代码块。除了内置异常类型,Python 还允许开发者定义自己的异常类型。这对于处理特定应用程序中的错误场景非常有用。自定义异常需要继承自内置的 Exception
类。
定义自定义异常类:
class MyCustomError(Exception):
def __init__(self, message):
self.message = message
super().__init__(self.message)
使用自定义异常:
def check_age(age):
if age < 18:
raise MyCustomError("Age must be 18 or older.")
return True
try:
check_age(16)
except MyCustomError as e:
print(f"Caught an exception: {e}")
# 输出: Caught an exception: Age must be 18 or older.
raise
语句:用于在程序中手动引发异常。可以在任何代码块中使用 raise
语句,并传递异常对象。异常处理是编写健壮代码的关键部分,通过使用 try-except
语句,你可以捕获并处理程序运行时的错误,避免程序崩溃。自定义异常使得可以针对特定的错误场景进行处理,从而使程序更加灵活和易于维护。通过掌握这些技术,你可以编写更加健壮、稳定的 Python 程序。