SonarQube:(改为获取特定异常子类型的列表)

Posted

技术标签:

【中文标题】SonarQube:(改为获取特定异常子类型的列表)【英文标题】:SonarQube: (Catch a list of specific exception subtypes instead) 【发布时间】:2021-03-06 12:36:19 【问题描述】:

我有一个关于通用异常的问题。当您尝试执行多项操作时,我们如何知道要使用哪个非泛型异常。

例如:

  @PostConstruct
    protected void init() 
        try 
            HttpSession session = request.getSession();
            String policyInfo = (String) session.getAttribute("policyInfo");
            if(session.getAttribute("faxNumber") != null) 
                faxNumber = (String) session.getAttribute("faxNumber");
            
            policyNumber = (String) session.getAttribute("policyNumber");
            JSONObject policyInfoObj = new JSONObject(policyInfo);
            JSONArray policiesArr = policyInfoObj.getJSONArray("policies");
            if (policiesArr.length() > 0) 
                JSONObject policyObj = policiesArr.getJSONObject(0);
                JSONArray insuredVehicle = policyObj.getJSONArray("insuredVehicle");
                checkInsuredVechile(insuredVehicle);
                termStartDate = policyObj.getString("effectiveDate");
                JSONArray addressArray = policyObj.getJSONArray("address");
                policySource = policyObj.getString("policySource");
                checkAddressArry(addressArray);

            
            
             
             
            policyNumber = policyNumber.substring(0,5)+"-"+policyNumber.substring(5,7)+"-"+policyNumber.substring(7);
            
            response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
        catch(Exception  e) 
            logger.error("Exception in getting policy details",e);
        
    

所以对于catch(Exception e) ,它将需要一个非通用异常,但我无法确定它可能是什么。

【问题讨论】:

去掉catch,看看你的IDE抱怨什么未被捕获,然后添加它们 @Michael 删除捕获并离开尝试?在我构建它之后,我得到一个构建失败。 不管怎样。只需查看错误“X 未捕获”,然后添加它。冲洗并重复,直到它起作用 Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure /va/com/farmers/aem/farmers/core/models/GetPolicyDetails.java:[57,9] 'try' without 'catch', 'finally' or resource declarations 好的,谢谢,它说构建失败对 ureported 异常 unreported exception org.json.JSONException; must be caught or declared to be thrown 【参考方案1】:

您应该只捕获特定的异常,例如:

catch(org.json.JsonException e)

而不是基类Exception,这意味着所有可能的检查和未检查异常

【讨论】:

RuntimeException 怎么样?我们可以将其用于未选中的吗? 规则应该在文档中有哪些结构是允许的。什么是规则 ID?

以上是关于SonarQube:(改为获取特定异常子类型的列表)的主要内容,如果未能解决你的问题,请参考以下文章

未处理的异常:类型'List<dynamic>'不是'String'类型的子类型无法获取json数据[重复]

SonarQube 特定的构建和报告生成

获取子文件夹 Azure 中的 blob 列表

SonarQube API:检索分配给项目权限的用户列表?

无法获取数据,使用包 yfinance 按格式分组下载到熊猫数据框中,仅适用于我的子列表中的特定代码

powershell 这将使用power shell获取特定SharePoint网站集下的所有子网站的列表。第二个文件获取我们的子站点