1

率直に言って、私は私のインストラクターが私にここで何をするように頼んでいるのか理解していません。「try--catch」ブロックを使用してみましたが、メソッドシグネチャでExceptionをスローしました。チェックされた例外とチェックされていない例外について読みました。これは投票されるか閉鎖されると確信していますが、誰かが私に骨を投げることができますか?私のインストラクターの指示は次のとおりです。

「コンパイルするように修正してください。」

class Exception3{
    public static void main(String[] args){         
    if (Integer.parseInt(args[0]) == 0)             
        throw new Exception("Invalid Command Line Argument");     
     } 
}

RuntimeExceptionをスローしていることは明らかです。より具体的には、ArrayIndexOutOfBoundsException。例外の原因は、配列が空であるため、参照されているインデックスが存在しないためです。つまり、技術的には、消去if(Integer.parseInt(args[0]) == 0)throw new Exception("Invalid Command Line Argument");て置き換えることができますSystem.out.println("It compiles now");

何か案は?

4

2 に答える 2

7
public static void main(String[] args) throws Exception{         
    if (Integer.parseInt(args[0]) == 0)             
        throw new Exception("Invalid Command Line Argument");     
     } 

メソッドExceptionがスローするので、メソッド宣言はそれがスローする可能性があることを指定する必要がありますException

Javaチュートリアルによる

チェックされた例外は、CatchまたはSpecify要件の対象となります。Error、RuntimeException、およびそれらのサブクラスによって示される例外を除いて、すべての例外はチェックされた例外です。

于 2012-11-13T04:20:25.447 に答える
3

trycatchステートメントを使用してキャッチする必要があります。

class Exception3 {
    public static void main(String[] args) {
        try {
            if (Integer.parseInt(args[0]) == 0)
                throw new Exception("Invalid Command Line Argument");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

または、メソッドヘッダーで宣言します。

class Exception3 {
    public static void main(String[] args) throws Exception {
        if (Integer.parseInt(args[0]) == 0)
            throw new Exception("Invalid Command Line Argument");
    }
}
于 2012-11-13T04:28:11.993 に答える