検査例外、非検査例外
非検査例外(RuntimeException)
try-catchでエラーを捕捉しなくてもよい。
というより、むしろすべきでない。
コードの書き方で起こるもの。
検査例外(Exception配下のRuntimeException以外)
これは、必ずどこかでtry-catchしなくてはならない。
コードで防ぎようのないエラーだから。(正しくコードを書いていても起きるときには起きる。目的のファイルがない、SQLの接続がうまくいかなかったなど)
それが発生するメソッド内でtry-catchしなくてもthrowsで、呼び出し元でエラーハンドリングすることができる。