java - 如何将失败情况处理成一个简单的 Java 应用程序?

标签 java jakarta-ee architecture exception

我是一名 Java 开发人员,但我在软件架构方面还没有很多经验。

我有以下情况。我正在创建一个批处理应用程序(运行到 shell 中的命令行应用程序),因此它是从定义到 Main() 类中的 ma​​in() 方法启动的。

在这个 ma​​in() 方法中,我创建了一些其他类的对象实例来执行某些操作(例如在数据库上执行查询、创建 PDF 等),因此应用程序在这里可能会失败。

如果应用程序没有失败(一切都按预期进行),ma​​in() 方法以退出代码 = 0 结束。

我希望如果应用程序失败(在任何时候)返回的退出代码是 -1

所以现在我不知道该如何处理这种情况。

例如,如果进入 ma​​in() 方法,我有这样的东西:

// Create DAO object:
FatturaDAO fatturaDAO = new FatturaDAO(conn);
listaFatture = fatturaDAO.getListaFatturePDF(partitaIVA);

我在其中创建并使用了一个 DAO 对象。现在考虑 FatturaDAO 对象发生故障的情况(例如连接丢失并引发异常)。

如何正确处理这种情况?

我有 2 个想法,但我不知道什么是最好的解决方案:

  1. 我在我的代码中放置了一些 try catch block ,因此如果出现问题,它会进入处理它的 catch block 执行:

    System.exit(-1);
    
  2. 如果某事失败,它会进入 catch block ,而不是退出并抛出一个自定义异常,该异常返回到执行以下操作的 ma​​in() 方法:

    System.exit(-1);
    

或者我可以用其他更聪明的方式处理这些情况吗?

最佳答案

2. If something fail it enter into the catch block that instead of exit 
throws  a custom exception that goes back until the main() method that perform:

如果您在 main() 中处理异常,那么您必须在父级具有错误处理代码。如果有任何变化不需要检查其他函数,你只需要在其他函数上添加through关键字并在main()中处理异常并返回所需的类型。

在大多数 J2EE 应用程序中,我们在 Controller 部分处理异常,而不是 DAOService 层。发生异常时更容易向用户传递消息。

关于java - 如何将失败情况处理成一个简单的 Java 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28738991/

相关文章:

architecture - 智能家居系统UML图

java - 无法从客户端应用程序获取 Bean

Java EE - HTTP 错误 404 - 资源不可用 - 在页面上点击 "Submit"按钮后

tcp - 用户带宽和下载间隔之间的权衡

java - 在 JavaFX 中将 double 绑定(bind)转换为 double 值

java - 如何使用 Apache POI 在不同行创建多个自动筛选器

java - 优化低于O(n²)的圆内圆检测算法

Java CompletableFuture 链调用接口(interface)

jakarta-ee - 超时后停止 solr 搜索

SwiftUI:什么替代了委托(delegate)协议(protocol)?