如何将失败情况处理成一个简单的 Java 应用程序?
How to handle fail situation into a simple Java application?
我是一名 Java 开发人员,但我在软件架构方面还没有很多经验。
我有以下情况。我正在创建一个批处理应用程序(一个 运行 进入 shell 的命令行应用程序)所以它是从 main() 定义到 [=] 的方法开始的40=]主要() class.
在这个 main() 方法中,我创建了其他 classes 的一些对象实例来做一些事情(例如在数据库上执行查询,创建 PDF 等) ) 所以这里的应用程序可能会失败。
如果应用程序没有失败(一切按预期进行),main() 方法以 退出代码 = 0 结束.
我希望如果应用程序失败(在任何时候)返回的 退出代码是 -1。
所以现在我不知道该如何处理这种情况。
例如,如果进入 main() 方法,我有这样的东西:
// Create DAO object:
FatturaDAO fatturaDAO = new FatturaDAO(conn);
listaFatture = fatturaDAO.getListaFatturePDF(partitaIVA);
我在其中创建并使用了一个 DAO 对象。现在考虑 FatturaDAO 对象发生故障的情况(例如连接丢失并抛出异常)。
如何正确处理这种情况?
我有 2 个想法,但我不知道什么是最好的解决方案:
我在我的代码中放置了一些 try catch 块,所以如果出现问题,它会进入处理它的 catch 块执行:
System.exit(-1);
如果出现问题,它会进入 catch 块,而不是退出并抛出自定义异常,直到 main() 执行的方法:
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()
和 return 中处理所需类型的异常即可。
在大多数 J2EE 应用程序中,我们在 Controller
部分处理异常,而不是 DAO
或 Service
层。发生异常时更容易向用户传递消息。
在命令行应用程序中,main() 方法实际上是 UI 层。这是一个非常简单的框架 UI,但是,如果您构建应用程序以便主要 class 调用控制器层,并且控制器层抛出异常,您应该在main() 方法,以及 return 0 或 -1 的正确 "user value"。
我是一名 Java 开发人员,但我在软件架构方面还没有很多经验。
我有以下情况。我正在创建一个批处理应用程序(一个 运行 进入 shell 的命令行应用程序)所以它是从 main() 定义到 [=] 的方法开始的40=]主要() class.
在这个 main() 方法中,我创建了其他 classes 的一些对象实例来做一些事情(例如在数据库上执行查询,创建 PDF 等) ) 所以这里的应用程序可能会失败。
如果应用程序没有失败(一切按预期进行),main() 方法以 退出代码 = 0 结束.
我希望如果应用程序失败(在任何时候)返回的 退出代码是 -1。
所以现在我不知道该如何处理这种情况。
例如,如果进入 main() 方法,我有这样的东西:
// Create DAO object:
FatturaDAO fatturaDAO = new FatturaDAO(conn);
listaFatture = fatturaDAO.getListaFatturePDF(partitaIVA);
我在其中创建并使用了一个 DAO 对象。现在考虑 FatturaDAO 对象发生故障的情况(例如连接丢失并抛出异常)。
如何正确处理这种情况?
我有 2 个想法,但我不知道什么是最好的解决方案:
我在我的代码中放置了一些 try catch 块,所以如果出现问题,它会进入处理它的 catch 块执行:
System.exit(-1);
如果出现问题,它会进入 catch 块,而不是退出并抛出自定义异常,直到 main() 执行的方法:
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()
和 return 中处理所需类型的异常即可。
在大多数 J2EE 应用程序中,我们在 Controller
部分处理异常,而不是 DAO
或 Service
层。发生异常时更容易向用户传递消息。
在命令行应用程序中,main() 方法实际上是 UI 层。这是一个非常简单的框架 UI,但是,如果您构建应用程序以便主要 class 调用控制器层,并且控制器层抛出异常,您应该在main() 方法,以及 return 0 或 -1 的正确 "user value"。