问题描述
我有一个关于通用异常的问题.当您尝试执行多项操作时,我们如何知道要使用哪个非泛型异常.
I have a question about generic exceptions. How would we know which non-generic exception to use when you have a try that does multiple things.
例如:
@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) { 它将需要一个非泛型异常,但我无法确定它可能是什么.
So for catch(Exception e) { it will need a non-generic exception, but I am having trouble to determine what it can be.
推荐答案
您应该只捕获特定的异常,例如:
You should catch only specific exeption like:
catch(org.json.JsonException e)
而不是基类Exception,这意味着所有可能的已检查和未检查的异常
and not the base class Exception, which means all possible checked and unchecked Exceptions