2017-03-13 54 views
-2

をスローするように宣言する必要があります。「報告されていない例外IOExceptionが、キャッチまたはスローされるように宣言されなければならない」コードのこの部分で:報告されていない例外のIOExceptionが...私はこのエラーを取得してい捕まえたり

a = Double.parseDouble (kb.readLine()) ; 
b = Double.parseDouble (kb.readLine()) ; 
c = Double.parseDouble (kb.readLine()); 
ここ

は、コードの残りの部分である:

package quadratic.java; 


/** 
* 
* @author Painfulmono 
*/ 
import java.io.*; 
public class QuadraticDriver { 

    BufferedReader kb = new BufferedReader 
        (new InputStreamReader (System.in)); 
public static void main (String [] args){ 

    double a, b, c; 

    a = Double.parseDouble (kb.readLine()) ; 
    b = Double.parseDouble (kb.readLine()) ; 
    c = Double.parseDouble (kb.readLine()); 

    QuadraticJava q1 = new QuadraticJava (a, b, c); 

    q1.solve(); 
} 

}

どのように私はそれが宣言になるだろうか?

+1

どのような入力をコンソールに送信していますか? –

+1

例外を宣言するには、メソッドシグネチャにthrows句を追加します。 'throws IOException'です。しかし、たぶんtry-catchブロックを使用するかもしれません: 'try {/ *あなたのコード* /} catch(IOException e){/ *例外処理* /}'。 – Thomas

答えて

3

readLine()は、IOExceptionをスローすると宣言します。これはチェックされた例外です。つまり、無視することはできません。あなたはそれをキャッチするか必要がある、例えば:

try { 
    a = Double.parseDouble (kb.readLine()) ; 
} catch (IOException e) { 
    System.out.println("Can't read a"); // Or something more intellegent 
} 

それとも、あなたがそれを処理するための任意のインテリジェントな方法を持っていない場合、あなただけの、発信者の署名、例えばこの例外を追加することにより、上向きにそれを投げることができます:

例外を扱うとき Javaでは
public static void main (String [] args) throws IOException { 
+0

'main(String [] args)'から投げた場合、実行ポインタが例外処理パスに従い、main()の上に未定義のコントロールがあるため、アプリケーションがハングしたりクラッシュする可能性があります。 – geneSummons

+1

@geneSummonsあなたが 'main'から例外を投げた場合、プログラムは終了しなければなりません – Mureinik

1

は、それはあなたがどちらかハンドル(キャッチ)例外がORだけそれをを宣言しなければならない経験則です。

あなたの場合は、tryブロックにコードをラップすることで例外を捕捉(処理)する方がよいでしょう。 あなたはsomemethodAは()が、その後ハンドルが/このXYZExceptionを宣言し、コールスタックダウン他のいくつかの方法があるはずですXYZExceptionをスローすることを宣言するときので、あなたは、ルールの宣言部分のために行くべきではありません。
IOExceptionをスローするmainメソッドを宣言してはいけません。なぜなら、mainが例外をスローすると、main()メソッドがコールスタックの最下部に位置するため何もキャッチしないからです。

コードで使用されているBufferedReaderのreadLine()メソッドでは、IOExceptionがスローされます。 IOExeptionが実際に発生した場合には、readLine()メソッドを使用してプログラムを正常に終了させるためにtry/catchを使用する必要があります。

関連する問題