例外Exceptionとは何か?

   2012/09/27

プログラミングに出てくる専門用語というのは、普通の人には
分からなくて当たり前だと思います。

まいどっ、管理人イガジーです。

例えば「インスタンス」とか「コンストラクタ」など、カタカナだと
何も連想・類推できないのでちんぷんかんぷんです。
原語を推定して、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しなかったらどうなるか、というと
スタックトレースという情報を表示して、プログラムがそこで止まります。
ま、自分用のプログラムならばそれでも良いのですけれど。

と、少しは理解の助けになるように、と書いてみましたが
余計にわからなくなったらごめんなさい。

参考→Eclipseを使って、このTry/catch 文を生成させる

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)