2017-03-09 66 views
-3

我有java項目包含大約10-15個java文件和類的數量。我想從main()中的catch塊返回退出代碼1,如果發生任何異常,通過這些程序。然而,所有的類都有異常catch塊,所以異常將在那裏被處理,並且main()中的catch塊不能「看見」它。Java中的異常檢查main()

是否有任何方法檢查是否有任何異常發生在main()的起點內部的任何地方,而不會改變其他文件中的任何代碼,但僅在起始點。

感謝 Noushad

+0

不,你不能。你將不得不重構你的代碼。 – nbokmans

+0

謝謝大家的建議 –

回答

0

你不能。您需要修改其他類以向調用方拋出異常,以便您可以在main中捕獲異常並返回所需的退出代碼。

+1

Downvoter,您在2分鐘內低估了我的答案中的5個,沒有任何理由。你顯然正在試圖採取某種報復行爲。在我向主持人抱怨之前,請提供一個理由。 – VHS

+0

謝謝大家的建議 –

-1

從所有類的所有方法中拋出異常並將其捕獲到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. 
    } 
} 
+0

爲什麼選擇downvote?添加一些細節來改善這個答案。 – Maverick

+0

有人只是在沒有閱讀的情況下對這個問題中的所有內容進行低估。無論是拖車,還是他們覺得這是一個不應該回答的問題。 –

+1

撇開'catch(Exception e)'是一個壞習慣這個事實,'main'方法根本不應該有try/catch。只需用'throws Exception'聲明'main'方法。如果主線程中發生異常,Java將以非零狀態退出。 – VGR

-1

寫一個共同的 「記錄」 功能,並從任何相關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塊實際上做什麼,說實話,這一切聽起來像一個壞主意。記錄異常可能是好的,所以你知道他們在哪裏,什麼時候發生,但退出程序甚至已經正確處理的程序不是一個好主意。

+0

謝謝大家的建議 –

相關問題