Java 为什么逻辑和通过catch块路由是个坏主意?

Java 为什么逻辑和通过catch块路由是个坏主意?,java,exception-handling,Java,Exception Handling,我最近修改了下面的代码以捕获数据库中的异常,如果出现错误,请在GUI上显示错误消息……但是我的主管说这是个坏主意!! 嗯,对我来说,这似乎更方便,而且想不出任何可能的原因来解释为什么从设计角度来看这是一个坏主意 提前谢谢 try{ getFromDB(){ //Getting some info from the Database eg Date, lists of pack etc} } catch (SQLException e) { //C11821735

我最近修改了下面的代码以捕获数据库中的异常,如果出现错误,请在GUI上显示错误消息……但是我的主管说这是个坏主意!! 嗯,对我来说,这似乎更方便,而且想不出任何可能的原因来解释为什么从设计角度来看这是一个坏主意

提前谢谢

try{
getFromDB(){
//Getting some info from the Database eg Date, lists of pack etc}
}
 catch (SQLException e) {
        //C11821735 
        req.setAttribute("dateDebut", dateDebut);
        req.setAttribute("dateFin", dateFin);
        req.setAttribute("Erreur", "Erreur : " + e.getMessage());
        req.setAttribute("Pack", packList);
        req.setAttribute("LISTE", liste);
        return mapping.findForward("self");
    }

这段代码用于我的目的,即在出现主键冲突时向用户抛出错误,然后再次将其重定向到同一页面……我只想知道使用这种方法的缺点是什么……这是一个非常糟糕的设计还是在哪些情况下可能会失败

例外情况只能用于例外情况。否则代码将很难阅读,可能效率低下等等。

我不清楚异常处理程序中的代码实际上做了什么。在请求中设置值?但我猜它确实会导致GUI中出现错误消息

正如您所说,如果您需要捕获异常并显示错误,我不确定您还可以做什么。我们可能会问您是否应该捕获其他异常,但我不认为这是一个内在的问题

关于不使用异常来管理正常代码路径,有一些通用的代码样式规则,但这里您使用的是一个实用函数,它在异常情况下确实会引发异常,并且需要处理该异常


在你的情况下,我会问我的领导一个他更喜欢的例子。有两种可能:我们学习一些东西,或者他去哦,是的,你确实需要这样做。诚然,我们可能会了解到,他更喜欢我们不喜欢的东西,但这就是生活。

如果抛出IOException或SQLException以外的任何其他异常,会发生什么情况?这不是一个好模式,但其中一个原因可能是您的主管希望对某些数据进行回退初始化,并继续执行算法,而不是异常。然而,即使是这种情况,也最好在final中通过检查否则将被初始化的状态来完成,e应该被保留,以便稍后可能重新刷新,正如@DarkKnight正确指出的那样,任何其他异常都将被传播。SQLException不太可能是由于缺少数据,更可能是由于错误的查询,因此这种回退选项是否真的有意义值得怀疑。但在这里,较低级别的代码抛出异常,就像大多数DB访问函数一样。我们需要处理它。你有什么建议?我们需要显示的错误信息在异常中。当然我们必须使用异常处理程序?不,我不认为修改低级函数不抛出异常会改进代码。@djna-我同意你的观点,这会让我的领导唠叨几天,不管是否有其他更好的方法!!!:-就功能而言,应该向用户显示错误消息……让用户意识到他所做的一切都不起作用……他需要重试!!如果上面的代码没有给出任何java规则,那么我很好!