Python异常处理通过try...except...else...finally结构捕获和处理错误,保证程序健壮性;可自定义异常类继承Exception,并在抛出时提供详细信息;应优先使用内置异常类型如ValueError、TypeError等,避免宽泛捕获,区分业务与技术异常,常见内置异常包括ZeroDivisionError、FileNotFoundError、KeyError等。

Python异常处理的核心在于使用
try...except块来捕获和处理可能出现的错误,从而保证程序的健壮性。简单来说,就是先“试着做”,如果出错了,就“抓住它”并“处理它”。
解决方案:
在Python中,异常处理主要依赖于
try、
except、
else和
finally这四个关键字。
-
try
块:把你认为可能会出错的代码放在try
块中。立即学习“Python免费学习笔记(深入)”;
except
块:如果try
块中的代码抛出了异常,Python会查找与该异常类型匹配的except
块,并执行其中的代码。可以有多个except
块来处理不同类型的异常。else
块(可选):如果try
块中的代码没有抛出任何异常,那么else
块中的代码会被执行。finally
块(可选):无论try
块中的代码是否抛出异常,finally
块中的代码都会被执行。通常用于清理资源,例如关闭文件。
一个基本的例子:
try:
result = 10 / 0 # 这会抛出一个ZeroDivisionError
except ZeroDivisionError as e:
print(f"除零错误!: {e}")
except TypeError as e:
print(f"类型错误:{e}")
else:
print(f"结果是:{result}")
finally:
print("无论如何,我都会被执行。")在这个例子中,由于
10 / 0会抛出
ZeroDivisionError,所以会执行对应的
except块中的代码。
else块不会被执行,但
finally块一定会执行。
如何自定义异常?
有时候,Python内置的异常类型不足以描述你的特定错误情况。这时,你可以创建自定义异常。
JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也
自定义异常通常通过创建一个继承自
Exception类或其子类的类来实现。
class MyCustomError(Exception):
"""自定义异常类"""
def __init__(self, message="发生了一些错误"):
self.message = message
super().__init__(self.message)
def some_function(value):
if value < 0:
raise MyCustomError("值不能为负数")
return value * 2
try:
result = some_function(-1)
except MyCustomError as e:
print(f"捕获到自定义异常:{e}")
在这个例子中,
MyCustomError是一个自定义异常类。
some_function在
value小于0时会抛出这个异常。
如何选择合适的异常类型?
选择合适的异常类型对于代码的可读性和维护性至关重要。
使用内置异常: 尽可能使用Python内置的异常类型,例如
ValueError
、TypeError
、IOError
等。这些异常类型已经被广泛理解,可以减少代码的理解成本。避免过度捕获: 不要使用过于宽泛的
except
块,例如except Exception:
。这会捕获所有类型的异常,包括你可能没有预料到的异常,从而隐藏潜在的问题。具体化异常信息: 在抛出异常时,提供尽可能详细的错误信息。这可以帮助调试和定位问题。
区分业务异常和技术异常: 业务异常是指由于业务逻辑错误导致的异常,例如用户不存在、订单金额不足等。技术异常是指由于技术问题导致的异常,例如网络连接失败、数据库连接失败等。应该根据不同的情况选择不同的异常类型。
常用的Python内置异常类有哪些?
Python内置了许多常用的异常类,以下是一些常见的:
Exception
: 所有异常的基类。ArithmeticError
: 所有算术错误的基类。ZeroDivisionError
: 除零错误。OverflowError
: 算术运算溢出。
LookupError
: 所有查找错误的基类。IndexError
: 索引超出范围。KeyError
: 键不存在。
IOError
: 输入/输出错误。FileNotFoundError
: 文件未找到。
ImportError
: 导入模块错误。TypeError
: 类型错误。ValueError
: 值错误。NameError
: 变量名未定义。AttributeError
: 属性错误。OSError
: 操作系统错误。RuntimeError
: 运行时错误。NotImplementedError
: 未实现错误。
理解并熟练运用这些异常类,可以让你更好地处理Python程序中可能出现的各种错误,提高程序的健壮性和可靠性。









