-1

私は Java アソシエイト試験の勉強をしていますが、試験中に何がチェックされ、何がチェックされていないかを判断するのに苦労しています。ここで読んだものからコードを書くことができれば、それを調べたり、instanceofを実行したりできることはわかっていますが、それを判断する簡単な方法はありますか. いくつか取り上げましたが、全部覚えるのは大変です。以下は、この知識に基づく問題の試験です。

public static String readData (Path filePath)
  throws IOException, IllegalArgumentException {
     //implementation omitted
}

どの 2 つのコード フラグメントがコンパイルされますか?

public static void main(String[] args) {
 try {
      readData(Paths.get("test"));
 } catch (IllegalArgumentException ex) {
      System.err.println(ex);
 }
}

public static void main(String[] args)
  throws IOException{
 readData(Paths.get("test.txt"));
}

public static void main(String[] args)
  throws IllegalArgumentException{
 readData(Paths.get("test.txt"));
}

public static void main(String[] args) {
 readData(Paths.get("test.txt"));
}

public static void main(String[] args) {
try {
 readData(Paths.get("test"));
 } catch (IOException ex) {
      System.err.println(ex);
 }
}
4

1 に答える 1

0

チェック済み例外は、コンパイル時にチェックされる例外です。メソッド内の一部のコードがチェック例外をスローする場合、メソッドは例外を処理するか、throws キーワードを使用して例外を指定する必要があります。FileNotFoundException (IOException のサブクラス) のようないくつかの例外は、チェックされた例外であり、コードで処理する必要があります。

Unchecked は、コンパイル時にチェックされない例外です。Error および RuntimeException クラスの下の Java 例外は未チェックの例外であり、throwable の下の他のすべてがチェックされます。

したがって、IOException はチェック済みの例外であり、IllegalArgumentException はチェックされていない例外です。答えは次のとおりです。2番目のオプションと最後のオプション

Correct Answers: 
public static void main(String[] args)
  throws IOException{
 readData(Paths.get("test.txt"));
}

public static void main(String[] args) {
try {
 readData(Paths.get("test"));
 } catch (IOException ex) {
      System.err.println(ex);
 }
}

したがって、例外がチェックされているかチェックされていないかを確認するには、ユーザー入力の結果として例外が発生した場合、またはコンパイル時に不明なその他の外部値がチェックされていない場合のように保つことができます。その他の例外はチェックされます 例外

たとえば、IllegalArgumentException は、Argument が不正な場合に発生します。コードを書いている間は引数がわからず、予期されていません。したがって、それはチェックされていない例外です。

上記のルールをこのリストのすべての例外に適用できます

未チェック

ArrayIndexOutOfBoundsException

クラスキャスト例外

IllegalArgumentException

IllegalStateException

NullPointerException

NumberFormatException

アサーション エラー

ExceptionInInitializerError

StackOverflowError

NoClassDefFoundError

于 2015-03-11T16:48:32.047 に答える