在Python中,通用异常处理的"正确方法"需要遵循清晰性、可维护性和安全性原则。以下是完整的解决方案:
异常处理是通过try-except
块捕获运行时错误,防止程序意外终止的机制。Python使用继承体系组织异常(BaseException
为根类,Exception
是常用基类)。
try:
with open('data.txt') as f:
content = f.read()
except FileNotFoundError: # 明确捕获特定异常
print("文件不存在")
except PermissionError:
print("无权限访问")
try:
risky_operation()
except ValueError as ve: # 优先处理具体异常
handle_value_error(ve)
except Exception as e: # 通用异常兜底
log_error(e)
raise # 重新抛出或处理
else:
print("操作成功") # 无异常时执行
finally:
cleanup() # 必须执行的清理操作
import logging
logging.basicConfig(filename='app.log')
try:
process_data()
except Exception as e:
logging.exception("操作失败: ") # 自动记录堆栈
except:
会捕获所有异常(包括KeyboardInterrupt
)except Exception: pass
try:
parse_config()
except ConfigError as ce:
raise RuntimeError("系统初始化失败") from ce # 保留原始异常
class APIError(Exception):
"""自定义API异常"""
def __init__(self, message, status_code):
super().__init__(message)
self.status_code = status_code
class DatabaseConnection:
def __exit__(self, exc_type, exc_val, exc_tb):
if exc_type:
rollback()
else:
commit()
from typing import NoReturn
def critical_task() -> NoReturn:
try:
execute()
except Exception:
shutdown_system()
raise
if-else
而非依赖异常通过遵循这些原则,可以构建健壮且可维护的异常处理体系。关键点是:精确捕获、完整日志、资源清理、避免静默失败。
没有搜到相关的文章