例外Exceptionとは何か?
プログラミングに出てくる専門用語というのは、普通の人には
分からなくて当たり前だと思います。
まいどっ、管理人イガジーです。
例えば「インスタンス」とか「コンストラクタ」など、カタカナだと
何も連想・類推できないのでちんぷんかんぷんです。
原語を推定して、instanceとかconstructorを辞書で引いてみても
さっぱりわかりませんよね。
これは、もう、「犬」とか「猫」などの名詞と同じで、実物(実例)と
対応づけるしかないと思うのです。
「犬」を知らない人は、いくら「犬の説明」を読んでもわかる訳がないからです。
そして「例外」や「継承」など、訳されて(?)日本語になっていると
分かるような気もしますが、やっぱり何か奇妙な感じがします。
で、今日はこの「例外」の話ですが、やはり実例が一番ですよね。
次の例は、文字列を数字に変換するInteger.parseInt(String s);です。
String ss="123";
int rv;
try {
rv=Integer.parseInt(ss);
}catch (Exception e) {
rv=0;
}
変換元が”123″などの数字を表すものであれば
問題なく123という「数値」に変換できます。
ところが、”1P3″など、数値に変換できないものが含まれていたら困るわけです。
黙って0にして済む場合もありますが、それはケースバイケース。
メソッドInteger.parseInt()としては、「てーへんだぃ(大変だ)」と
普通じゃない事態になると仕事を投げ出すようになっています。
それが「例外」で、俗に例外を投げる(throw)と言います。
投げる奴がいたら、誰かが受け取る必要があって、catchを書きます。
何が飛んでくるかによって、複数人がそれぞれ分担して受け取る事もあります。
右方向に飛んだフライはライトがキャッチし、左飛球はレフトが取る、
という感じです
例外が起きたのに、catchしなかったらどうなるか、というと
スタックトレースという情報を表示して、プログラムがそこで止まります。
ま、自分用のプログラムならばそれでも良いのですけれど。
と、少しは理解の助けになるように、と書いてみましたが
余計にわからなくなったらごめんなさい。
この記事へのコメントはこちら