[英]Java: How do handle ConcurrentModificationException in this particular situation?
[英]How to handle fail situation into a simple Java application?
我是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);
還是我可以以其他更聰明的方式處理這些情況?
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
層中處理異常。 發生異常時,將消息傳遞給用戶更容易。
在命令行應用程序中,main()方法實際上是UI層。 這是一個非常簡陋的UI,但是,如果您構建應用程序以使主類調用控制器層,並且控制器層引發異常,則應在main()方法中捕獲該異常,然后返回正確的“用戶值”為0或-1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.