我是一名Java开发人员,但我还没有很多软件架构方面的经验。
我有以下情况。我正在创建一个批处理应用程序(运行到shell中的命令行应用程序),因此它是从定义到 Main()类中的 main()方法启动的。 / p>
在这个 main()方法中,我创建了一些其他类的对象实例(例如在数据库上执行查询,创建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()方法: / p>
System.exit(-1);
或者我可以用其他更聪明的方式处理这些情况吗?
答案 0 :(得分:3)
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
部分而不是DAO
或Service
层的异常。当异常发生时,更容易将消息传递给用户。
答案 1 :(得分:1)
在命令行应用程序中,main()方法实际上是UI层。它是一个非常简单的用户界面,但是,如果您构建应用程序以便主类调用控制器层,并且控制器层抛出异常,则应该在main()方法中捕获该异常,并返回正确的"用户值" 0或-1。