3

重複の可能性:
ランタイムとコンパイル時間

Java の特定のコード行がコンパイル時エラーまたは実行時エラーをスローする可能性があるかどうかを知るにはどうすればよいですか? とにかく特定のコード行がスローされ、エラーが発生すると仮定します。

4

5 に答える 5

13

Eclipse では、コンパイル時のエラーは赤で下線が引かれます。コンパイル時エラーは、コンパイラによって検出されるエラーです。コンパイル時エラーの一般的な原因は次のとおりです。

  • セミコロンの欠落や予約済みキーワード (「class」など) の使用などの構文エラー。
  • スコープ外の変数にアクセスしようとしたとき。
  • 同じ名前で複数のオブジェクトを宣言する場合。

コンパイラがコンパイル中にエラーを検出すると、新しいアセンブリ (または Java のクラス ファイル) の構築に失敗します。

コードにコンパイル時エラーがない場合でも、実行時にエラーが発生する可能性があります。「ロジック エラー」や「ランタイム エラー」などのエラー。実行時エラーの良い例は次のとおりです。

  • インデックス 5 の配列にアイテムを格納しようとしているが、配列のサイズは 4 しかないと仮定します。コンパイラは、配列のサイズが変更される可能性があることを理解しているため、ここでエラーを検出しませんが、実行時に「例外がスローされます。

実行時エラーが発生した行を正確に検出するには、Eclipse のブレークポイントと適切な例外処理を組み合わせて使用​​できます。

于 2012-10-14T13:08:04.740 に答える
6

コードがコンパイルされないかどうかを確認するには、コンパイルしてみてください。コンパイラは文句を言います。

コードに実行時エラーが含まれているかどうかを確認するには、単体テストを記述します。

于 2012-10-14T13:01:41.453 に答える
5

事実上、コードのすべての行が理論的には実行時例外をスローする可能性があり、「コンパイル時エラーをスローする」ようなことはありません。コンパイラ エラーと実行時例外を混同していると思います。

とにかく、コンパイル エラーは簡単です。コンパイルして確認してください。それらについて「可能性」は決してありません。コード行は確実にコンパイラ エラーを生成するか、または生成しません。

実行時エラーに関しては、コード行がエラーになるかどうかを静的に分析して推測するのが最善の方法です。throw new RuntimeException()やのように明らかな場合もありますnull.toString()が、ほとんどはそうではなく、実行せずに分析するには豊富な経験が必要です。

于 2012-10-14T13:02:21.340 に答える
2

最善の方法は、それをコンパイルすることです。その後、ほとんどのコンパイラはコンパイル時のエラーをすべて指摘します。一方、実行時エラーの場合、開発者はより多くの労力を必要とします。

一部のコンパイラは、スローされる可能性のある例外をユーザーに通知しますが、特定のコード行にランタイムが含まれているかどうかを確認する最善の方法は、異なる入力でそれらを実行し、結果を観察することです (つまり、単体テスト、サニティ テストなどを使用します)。

于 2012-10-14T13:01:42.587 に答える
0

コードをコンパイルすると、コンパイル時エラーがあるかどうかがわかります。コードを実行すると、ランタイム エラーが表示される場合があります。

于 2012-10-14T13:03:05.520 に答える