例外処理

これまでC言語などでは、setjmpやlongjmp関数、関数の戻り値などをみて、異常な値の場合はエラー処理をしていた・・・。
C++などのオブジェクト指向言語の多くは、より高度なエラー処理をするために例外処理機構をもっている・・・。

入力された値xが0以下だった場合、例外として処理する・・・。

例外が起きそうな処理をtryブロックで囲む・・・。

xが0のとき、

throw句で、文字列"zero"をパラメータとして例外を投げる・・・。

一方、xが0より小さいときは、

throw句で、xをパラメータとして例外を投げる・・・。

パラメータが文字列の場合は、

このcatch句で例外処理をする・・・。

一方、intの値なら、

このcatch句で例外処理をする・・・。

実際に入力すると、

$ ./exception
x: 0
throw: zero
catch: zero
$ ./exception
x: -5
throw: -5
catch: -5
$

0と-5で投げられるcatch句が違う・・・。
このようにパラメータの型で例外処理を分けられる・・・。
今回は文字列とintで分けたが、実際には例外ごとに例外クラスを作って、それごとに分けるのが一般的・・・。
というかMFCや.NETFrameworkなど大抵のフレームワークはさまざまな例外クラスを準備しているので、そのクラスごとに分ける・・・。

Sample/exception.cpp at master · bg1bgst333/Sample · GitHub