一、Python异常处理
在 Python 中,异常处理是一种用于处理程序运行时可能出现的错误情况的机制。
异常处理使用 try-except 语句结构。以下是一个基本的示例:
try:
# 可能会引发异常的代码
result = 10 / 0
except ZeroDivisionError:
# 处理除数为 0 的异常
print("不能除以 0!")
您还可以使用多个 except 子句来处理不同类型的异常:
try:
num = int("abc")
result = 10 / 0
except ValueError:
print("值错误,无法将非数字字符串转换为整数。")
except ZeroDivisionError:
print("不能除以 0!")
此外,还可以使用 except Exception as e 来捕获所有类型的异常,并通过 e 获取异常的相关信息:
try:
# 可能引发异常的代码
num = int("abc")
except Exception as e:
print(f"发生了异常: {e}")
try-except 语句还可以包含 else 子句,当 try 子句中的代码没有引发异常时执行:
try:
num = 5
except ValueError:
print("值错误")
else:
print("没有异常,num 的值为:", num)
以及 finally 子句,无论是否发生异常都会执行:
try:
num = 10 / 2
except ZeroDivisionError:
print("不能除以 0!")
finally:
print("这部分总会执行")
通过合理地使用异常处理,可以增强程序的健壮性和容错性,使其在面对各种错误情况时能够更加稳定和可靠地运行。
二、常见的异常类型
以下是 Python 中一些常见的异常:
- ZeroDivisionError:当尝试除以零时引发。
- NameError:当尝试使用未定义的变量时引发。
- TypeError:当操作或函数应用于不适当类型的对象时引发。
- ValueError:当函数接收到具有正确类型但值不合适的参数时引发。
- IndexError:当尝试使用超出序列范围的索引时引发。
- KeyError:当尝试访问字典中不存在的键时引发。
- FileNotFoundError:当尝试打开不存在的文件时引发。
- AttributeError:当尝试访问对象不存在的属性时引发。
- ImportError:当导入模块失败时引发。
- SyntaxError:当代码存在语法错误时引发。
三、自定义异常
以下是一个 Python 自定义异常的示例:
class CustomException(Exception):
"""自定义异常类"""
def __init__(self, message):
self.message = message
def __str__(self):
return f"自定义异常: {self.message}"
# 使用自定义异常
def divide_numbers(a, b):
if b == 0:
raise CustomException("除数不能为 0")
return a / b
try:
result = divide_numbers(5, 0)
except CustomException as e:
print(e)