You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

捕获异常后直接抛出是否正确?SonarScan代码异味疑问

解决SonarScan代码异味:多余的Except子句处理

你的代码中except FileNotFoundError as e: raise e属于冗余逻辑——Python在异常发生时,若没有捕获处理,会自动将异常向上层抛出,这个子句没有执行任何额外操作,因此SonarScan会提示代码异味。

优化方案1:移除冗余except块

如果不需要在捕获异常时做额外处理,直接删除整个except块即可,代码行为和原代码完全一致,同时更简洁:

import json

def read_file():
    try:
        with open("/test/test.txt", 'r') as f:
            json_obj = json.load(f)
        return json_obj  # 建议补充返回值,避免函数无返回内容
    # 移除多余的except块,异常会自动向上抛出

优化方案2:添加实际处理逻辑(若需要)

如果需要在捕获异常时执行额外操作(比如记录错误日志),则保留except块并补充处理代码,同时用raise(不带异常对象)重新抛出,这样能保留完整的异常追踪栈:

import json
import logging

def read_file():
    try:
        with open("/test/test.txt", 'r') as f:
            json_obj = json.load(f)
        return json_obj
    except FileNotFoundError as e:
        logging.error(f"读取文件失败:{str(e)}")  # 添加实际处理逻辑,如日志记录
        raise  # 重新抛出异常,保留原始异常栈信息

内容的提问来源于stack exchange,提问作者Farid Arshad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:53:00