2016-04-19 7 views
1

私はクラスがあると仮定し、 "den"が0の場合にチェックされた例外をスローするように次のコードを変更し、その例外をキャッチする関数を変更します。Javaで例外をスローする

public class divide { 
void divide(int num, int den){ 
    System.out.println(""+(num/den)); 
} 
void fun(){ 
    divide(4,2); 
} 
} 

例外をスローする正しい方法はどれですか?

オプション1:

void divide(int num, int den) throws Exception{ 
    if(den==0){ 
     throw new Exception("Dividebyzero"); 
    } 
    System.out.println(""+(num/den)); 
} 
void fun(){ 
    try { 
     divide(4,2); 
    } catch (Exception e) { 
    } 
} 

オプション2://私はこの1つが正しいと思い

void divide(int num, int den){ 
    if(den==0){ 
     throw new RuntimeException("Dividebyzero"); 
    } 
    System.out.println(""+(num/den)); 
} 
void fun(){ 
    try { 
     divide(4,2); 
    } catch (RuntimeException e) { 
    } 
} 

オプション3:この問題は、Javaのいずれかから来た

void divide(int num, int den) throws Exception{ 
    if(den==0){ 
     throw new RuntimeException; 
    } 
    System.out.println(""+(num/den)); 
} 
void fun(){ 
    try { 
     divide(4,2); 
    } catch (Exception, RuntimeException) { 
    } 
} 

演習。私は数年間Javaを学んだことがありますが、私はtry catch catchについて混乱しています。個人的には、例外を1回だけ投げるか、間違っているので、オプション2が正しいと思いますか?

+0

は、オプション3がコンパイルされません配列を作成するように、不正な引数のために良い選択であるとのあまりありませんオプション1または2の違い –

+0

小さな構文エラーは無視してくださいが、全体的な構造を見てください@ cricket_007 – user6119494

+0

したがって、使用するExceptionのサブクラスは? –

答えて

3

例外をスローする正しい方法は次のうちどれですか?

私はコードを複雑にしないで、代わりに私が既にスローする例外を使用します。

void printDivide(int num, int den) throws ArithmeticException { 
    System.out.println(num/den); 
} 

異なる例外を使用することは単なる複雑ではなく、混乱します。


が、それは別の例で設定することができます、そしてIllagelArgumentExceptionは

void createArray(int size) { 
    if (size < 0) 
     throw IllegalArgumentException("Size must be non-negative " + size); 
    this.array = new int[size]; 
} 
関連する問題