欢迎光临
我们一直在努力

异常处理:try-except-else-finally、自定义异常、捕获原则

博客导语

讲解完整五元异常结构,纠正新手裸except捕获所有异常的错误写法,梳理官方异常捕获层级、自定义异常业务落地、异常抛出规范。


一、五元完整语法

try:
业务代码
except 指定异常:
异常处理逻辑
else:
无异常时执行
finally:
无论是否异常,必定执行(资源释放专用)


二、异常捕获优先级

必须先捕获子类异常,再捕获父类Exception,顺序颠倒会导致子类捕获失效。禁止使用except:裸捕获,会掩盖系统崩溃异常。


三、自定义异常

继承Exception基类,用于业务自定义报错,例如参数非法、权限不足

class ParamError(Exception):
def __init__(self,msg):
self.msg = msg
def __str__(self):
return self.msg
# 主动抛出
raise ParamError("用户参数为空")


四、生产捕获原则

  • 最小范围捕获:只捕获预知异常,不捕获全部异常

  • finally只做文件、数据库、socket资源关闭

  • 异常必须打印堆栈traceback,方便排查问题

  • 赞(0)
    未经允许不得转载:171主机测评 » 异常处理:try-except-else-finally、自定义异常、捕获原则
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址