2015-04-21 51 views
1
public static double findLCM (int num1, int num2) { 

     for (int i = 1; i <= num2; i++) { 
      double mult = big * i; 
      if (mult % small == 0) { 
       return mult; 
      } 
     } 
     throw new Error("Error"); 
    } 

正如我們所知,不可能沒有LCM。請不要建議我在返回變量之後返回代碼的變通方法。此代碼是定製的,以瞭解要引發的異常。不可能的條件應該拋出什麼錯誤?

+1

您可以創建自定義例外: http://examples.javacodegeeks.com/java-basics/exceptions/java-custom-exception-example/ –

+0

*「此代碼是定製的,以瞭解要引發的異常。「*你實際上拋出一個不是例外的錯誤。 –

+1

IllegalStateException? – UnknownJoe

回答

1

最接近的配合可以的IllegalArgumentException

拋出,表明一個方法傳遞了一個不合法或不正確的說法。

+0

在這個特定的情況下,我會同意你的意見;有一個參數可以傳遞給構造函數來觸發錯誤(例如'num2 <1'),但是如果在這種情況下進行了檢查,或者存在必須違反的語言結構這部分代碼要到達,'IllegalStateException'更合適。 – ndm13

0

我認爲你可以使用異常

你可以說:

throw new Exception("Error"); 

這將解決你的問題。我不是100%肯定的,但它對我來說很多次都有效。

0

由於這是一個高級搜索結果,我覺得有必要添加一個響應。 @UnknownJoe留下了一個問題的評論,在我看來,這個問題應該是一般情況下的正確答案,而@ manouti的答案(接受)對於具體案例來說是正確的答案。

如果由於無效參數傳遞給方法而在程序執行過程中有可能訪問某段代碼,則IllegalArgumentException是正確的異常拋出;畢竟,這是導致該代碼執行的非法參數。在提供的示例中,如果我通過0作爲第二個參數,則會拋出異常。

我個人的用例是MessageDigest算法。由於已經提供了一組已知的算法since Java 1.5,所以我可以隨意直接引用任何這些名稱,而不用擔心潛在的NoSuchAlgorithmException。儘管我可以吞下這個異常,但是如果我的代碼在非標準實現上運行,或者如果環境出現問題,我可以將它包裝在IllegalStateException中,以允許我將它傳遞給鏈。但更重要的是,我會知道我的程序爲什麼失敗。

簡而言之:如果您的代碼可以通過提供無效參數而意外訪問,請使用InvalidArgumentException。如果您的代碼無法正常訪問並且只能被JVM僥倖訪問,請使用IllegalStateException

相關問題