java silverの問題を解いてて、コンパイルエラーと例外スローどちらになるかわからなかったのでまとめてみた。
コードがコンパイルエラーになるか、例外をスローするかの基準
-
コンパイルエラー(静的エラー):
- 定義と一致しない使用法:変数や関数の定義に反する使用(例:存在しないメソッドの呼び出し、データ型の不一致)。
- 構文エラー:プログラムの構文が言語の規則に違反している場合(例:セミコロンの欠落、括弧の不一致)。
- 解決できない参照:使用されているが定義されていない変数や関数への参照。
- アクセスレベルの違反:privateやprotectedなど、アクセスできないメンバへのアクセス。
-
実行時例外(動的エラー):
- 外部要因:外部リソースの問題、ネットワークエラーなど。
- 無効な入力:ユーザー入力や外部データソースからの予期しないデータ。
- リソースの問題:メモリ不足、ファイルシステムの問題など。
- プログラムの論理エラー:ゼロ除算、無効なインデックスへのアクセス、null参照など。
コンパイルエラーは、ソースコードがコンパイルされる際に発生し、実行ファイルやバイトコードが生成される前に検出される。一方、実行時例外は、プログラムが実行されている間に発生し、通常はプログラムの特定の状態や外部環境に依存する