gpt4 book ai didi

java - 在 catch block 中返回的代码是否干净?

转载 作者:行者123 更新时间:2023-12-02 06:05:21 25 4
gpt4 key购买 nike

我有一个 java servlet,它检查 URL 参数(最后一个 uri 部分,通配符)。给定这些参数,我想用 404 或实际响应进行响应。在 catch block 中执行 return; 的代码是否干净?

@WebServlet("/processes/edit/*")
public class ProcessEditServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

...

try {
id = StringManipulation.removeSlashes(request.getPathInfo());
numid = Integer.parseInt(id);
} catch (NumberFormatException e) {
response.sendError(404);
return;
}

request.getRequestDispatcher("/WEB-INF/processEdit.jsp").forward(
request, response);
}
}

最佳答案

正如dognose所说,这很大程度上取决于个人感受。我将重构此代码如下:

@WebServlet("/processes/edit/*")
public class ProcessEditServlet extends HttpServlet {
// you may get a logger over Dependency Injection or joust create one here...
private final Logger logger;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
...


if(validateRequest(request,logger){
request.getRequestDispatcher("/WEB-INF/processEdit.jsp").forward(
request, response);
}else{
response.sendError(404);
}
}

public static boolean validateRequest(Request request,Logger logger){
try {
id = StringManipulation.removeSlashes(request.getPathInfo());
numid = Integer.parseInt(id);
} catch (Exception e) {
logger.log(e); // you should at least log the exception
return false;
}
return true;
}
}

因为,它的测试器和整个 try/catch block 使代码膨胀并使其可读性降低 - 我知道人们将每个 try 和 catch 封装在自己的方法中。然而,干净的代码意味着可维护和可读的代码 - 在我看来,当你在 catch 中返回时就可以了,只要它有意义。

编辑1:添加记录器

关于java - 在 catch block 中返回的代码是否干净?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22338445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com