我是Java开发人员,但是我在软件体系结构方面还没有很多经验。
我有以下情况。我正在创建一个批处理应用程序(运行在shell中的命令行应用程序),因此它是从定义到Main()类的main()方法启动的。
在这个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()方法:
System.exit(-1);
还是我可以以其他更聪明的方式处理这些情况?
最佳答案
在命令行应用程序中,main()方法实际上是UI层。这是一个非常简陋的UI,但是,如果您构建应用程序以使主类调用控制器层,并且控制器层引发异常,则应在main()方法中捕获该异常,然后返回正确的“用户值”为0或-1。