【自分メモ】コンパイルエラーと実行時エラーの違い

Oracleブロンズの勉強をしていて、コンパイルエラーと実行時エラーの区別が自分のなかでついていないなと思ったので、整理する。

簡潔にいうと、
コンパイルエラー:Javaの構文に問題がある。
実行時エラー:処理が不可能。具体的な値が入ってから発覚する。

コンパイルエラーは、かっこの閉じ忘れやセミコロンのつけ忘れに加えて、必要なクラスをimportしていなかったりする場合も起こる。

実行時エラーでよく見られるのは、Nullエラーだったり、配列のインデックスエラーだったり、実行してみてから、「あれ、これ不可能じゃね?」とわかるもの。一文ずつ検査した結果は問題ないけど、実際に動かしてみると、他のプログラムとの兼ね合いだったり、入ってくるデータとの兼ね合いでエラーになる。

とりあえず、コンパイルできるかどうかってところが大きな違い。普段出会っているのは実行時エラーのほうが多いのかな。文法についてはIDEが指摘してくれることが多いから、コンパイルはだいたい通っている気がする。