3

Java の例外の種類について混乱しています。多くのチュートリアル Web サイトで、Java には 2 種類の例外があることがわかりました。

  1. コンパイル時例外
  2. 実行時例外

しかし、私が何人かの Java マスターと話をしたとき、彼らによると、コンパイル時例外のようなものはありません。彼らはそれが例外ではなくコンパイル時エラーであると言いました.Java docsでコンパイル時例外について何も見つかりませんでした。しかし、次のプログラムを実行すると

File f = new File("C:/Documents and Settings/satyajeet/Desktop/satya.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
System.out.println(s);

try catch が提供されていない場合、出力を下回りました。

D:\jdk1.6.0_19\bin>javac Testing.java
Testing.java:7: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
     FileReader fr=new FileReader(f);
                   ^
Testing.java:9: unreported exception java.io.IOException; must be caught or declared to be thrown
      String s=br.readLine();
                          ^
2 errors

このエラーまたはコンパイル時の例外を考慮する必要がありますか?

4

7 に答える 7

7

Javaには 3 種類のThrowableがあります。

  • s をチェックしましたException(Exceptionそして、チェーンを下って、 を保存しますRuntimeException)。これらはコンパイラによってチェックされ、スローされたときにキャッチする必要があります。これらは、参照ファイルがファイル システムで見つからない場合など、通常は回復可能な例外的な状態を表します (「参考文献」を参照FileNotFoundException)。
  • 未チェックまたはランタイムExceptions ( の子RuntimeException)。これらはキャッチせずに投げることができます。nullこれらは通常、オブジェクトのメソッドの呼び出しなど、プログラミング エラーを表します (「参考文献」を参照NullPointerException)。
  • Errors. これらも未チェックです。これらは、通常、開発者が直接制御できない (例: メモリ不足、 を参照OutOfMemoryError) など、非常に問題が発生した場合に JVM によってスローされます。コンパイラ エラーは、不適切な構文、あいまいな呼び出し、checked のキャッチの失敗など、さまざまな理由でコードのコンパイルに失敗したときに、Java コンパイラによって発行されますException
于 2015-09-24T10:43:31.900 に答える
4

読むべきではないと言った「有名なウェブサイト」。ゴミです。「コンパイル時例外」などはありません。あなたが話していた Java Geeks は正しいです1

実際、あなたはおそらくそれらの「有名なサイト」で読んだものを読み違えたり、誤解したりしています. 「コンパイル時エラー」と「実行時例外」があります。

あなたの例では、コードのエラーが原因であるコンパイル時のエラーメッセージがいくつかあります。コードが例外を正しく処理しないためにエラーが発生しますが、それでもエラーです。そして、それらはコンパイル時に... Javaコンパイラによって検出されます。


1 ...そして、「オタク」のような半軽蔑的なラベルを使用するのをやめる時が来たのかもしれません. 彼らは尊敬に値するようです。

于 2015-09-24T10:38:42.677 に答える
1

「コンパイル時の例外」などはありません。例外は実行時にのみ発生します (また、例外はチェックまたはチェック解除できます。これを調べることをお勧めします)。

そこにあるのは、単にコンパイルエラーです。あなたのコードは有効な Java でさえありません。

ちなみに、ほとんどのチュートリアルはゴミです。Oracle のチュートリアルなど、信頼できる情報源を使用してください。または良い本。

于 2015-09-24T10:38:44.097 に答える
0

Java には 2 種類の例外があります。

Checked Exception 
Unchecked Exception 

チェックあり : プログラマーが例外を処理する必要があります。そうしないと、プログラムはコンパイル エラーをスローします。

"チェック済み例外をコンパイル時の例外と呼ぶことができます"

現在、未チェックの例外: 未チェックの例外では、プログラマーは未チェックの例外を回避するような方法でコードを書くことができます。プログラマはコンパイル例外を取得できません。

未チェックの例外は実行時例外と呼ぶことができます

チェックされた例外のリスト:

 ClassNotFoundException
 EOFException
 IllegalAccessException...etc

メソッドがチェック済み例外をスローする必要がある場合は、

try{}catch(Exception ex ){} Or you can use the throws keyword.

未チェックの例外のリスト

 ArithmeticException  
 NullPointerException
 ArrayIndexOutOfBound...etc 
于 2015-10-07T20:13:01.277 に答える