12

とにかくそれらの例外を処理できる/ブロックがあるthrowのに、メインメソッドで例外を発生させる必要がある理由を理解しようとしていますか? 一部を削除しても、プログラムはコンパイルされ、完全に動作します。trycatchthrows IllegalArgumentException,InputMismatchException

public static void main(String[] args) throws IllegalArgumentException,InputMismatchException{
    boolean flag = true;
    Scanner in = new Scanner(System.in);
    do{
        try{
            System.out.println("Please enter the number:");
            int n = in.nextInt();
            int sum = range(n);
            System.out.println("sum = " + sum);
            flag = false;
        }
        catch(IllegalArgumentException e){
            System.out.println(e.getMessage());
        }
        catch(InputMismatchException e){
            System.out.println("The number has to be as integer...");
            in.nextLine();
        } 
4

6 に答える 6

3

どのメソッドにも、そのメソッドで発生する可能性のある例外を処理するための 2 つの選択肢があります。

最初の選択肢は、キャッチを使用してメソッド内で例外を処理し、それについて誰にも言わないことです。このアプローチは、これを呼び出すメソッドに影響を与えないエラーの処理に役立ちます。

2 番目の選択肢は、メソッドで例外をキャッチすることです。例外を処理するために何かを行う場合としない場合があります。さらに、呼び出し元のメソッドに何か問題が発生したことを伝えるので、必要なことを行います。このアプローチは有用であり、呼び出し階層の上に伝播する必要がある問題を引き起こしている例外に使用する必要があります。

メインメソッドから例外をスローするのは本当に良い考えだとは思いません。スローしなくても、JVM は例外を取得して終了するためです。できる最善のことは、これらの例外をキャッチして、メイン内で何らかの修正アクションを実行することです。例外をスローするかどうかに関係なく、例外が壊滅的なものである場合、プログラムは終了します。

于 2013-07-13T10:44:41.350 に答える
0

try-catch を使用して、コードで例外を処理しています。これがまさにその理由だ。

于 2013-10-24T21:25:12.563 に答える
0

基本的にチェック例外は処理する必要があります。コンパイラはそれを強制します。これは、 try catch または throws 句のいずれかで実行できます。そのうちの1つで十分です。

コードを呼び出してその例外を処理したくない場合は、最初のアプローチに頼ります。

于 2013-07-13T10:40:16.743 に答える