Javaの例外処理
例外処理
APIドキュメントを見ながらコードを書いたつもりなのに,コンパイルエラーが出てはまってしまったのでメモ.
ちゃんと例外処理を理解していなかったのが原因.
チェック例外
必ずチェック(try/catch)しないといけない例外のこと.チェックしないとコンパイルエラーになる.
どんな例外をチェックすべきかはメソッドによって決まっていてAPIドキュメントに書いてある.
例えばURLクラスのコンストラクタを呼び出そうとして
import java.net.URL; public class HelloHttp { public static void main(String[] args) { URL myURL = new URL("http://www.address.com"); //あとの処理 } }
とだけ書くとコンパイルエラーとなってEclipseではUnhandled exception type MalformedURLExceptionと言われる.
APIドキュメントを見ると
例外: MalformedURLException - 不明なプロトコルが指定された場合。
とあるので例外をチェックして,例えば
import java.net.URL; import java.net.MalformedURLException; public class HelloHttp { public static void main(String[] args) { try{ URL myURL = new URL("http://www.address.com"); } catch (MalformedURLException e) { System.err.println("Malformed URL"); } //あとの処理 } }
としなければならない.
ちなみに,MalformedURLExceptionクラスの呼び出しはjava.net.MalformedURLExceptionが必要.
非チェック例外
チェックしなくてもいい,というよりコンパイルエラーにならない例外のこと. 2種類ある.
- どうしようもない重大な深刻な例外...メモリ枯渇など
- いちいち検出していられない例外...ゼロ割りなど
2の例外については,例外というよりもプログラムのバグだから修正しろよ!という考え方みたい.