我有java項目包含大約10-15個java文件和類的數量。我想從main()中的catch塊返回退出代碼1,如果發生任何異常,通過這些程序。然而,所有的類都有異常catch塊,所以異常將在那裏被處理,並且main()中的catch塊不能「看見」它。Java中的異常檢查main()
是否有任何方法檢查是否有任何異常發生在main()的起點內部的任何地方,而不會改變其他文件中的任何代碼,但僅在起始點。
感謝 Noushad
我有java項目包含大約10-15個java文件和類的數量。我想從main()中的catch塊返回退出代碼1,如果發生任何異常,通過這些程序。然而,所有的類都有異常catch塊,所以異常將在那裏被處理,並且main()中的catch塊不能「看見」它。Java中的異常檢查main()
是否有任何方法檢查是否有任何異常發生在main()的起點內部的任何地方,而不會改變其他文件中的任何代碼,但僅在起始點。
感謝 Noushad
你不能。您需要修改其他類以向調用方拋出異常,以便您可以在main
中捕獲異常並返回所需的退出代碼。
Downvoter,您在2分鐘內低估了我的答案中的5個,沒有任何理由。你顯然正在試圖採取某種報復行爲。在我向主持人抱怨之前,請提供一個理由。 – VHS
謝謝大家的建議 –
從所有類的所有方法中拋出異常並將其捕獲到Main
方法的catch
塊中。記錄異常,然後退出。
public static void main(String[] args)
{
try
{
ClassA.methodX();
ClassB.method();
}
catch(Exception e) //use specific exception class
{
e.printsttrace();
System.exit(1);
}
}
A類
class classA
{
public static void methodX() throws Exception
{
try{
//perform some operation
}catch(Exception e)
{
//throw exception from here.
}
}
寫一個共同的 「記錄」 功能,並從任何相關catch塊調用它。如果您需要退出程序,請使用System.exit
。
public class Defines {
public static LogException(Exception exception) {
...
if (ShouldExitFromException(exception))
System.exit(1);
}
}
其他地方在你的代碼:
try {
// some code
} catch (Exception exception) {
Defines.LogException(exception);
}
但是這將取決於你的其他catch塊實際上做什麼,說實話,這一切聽起來像一個壞主意。記錄異常可能是好的,所以你知道他們在哪裏,什麼時候發生,但退出程序甚至已經正確處理的程序不是一個好主意。
謝謝大家的建議 –
不,你不能。你將不得不重構你的代碼。 – nbokmans
謝謝大家的建議 –