try-catch構文とは
try-catch構文とはC++における例外処理を実装する為の機能です。
これを使えば簡単に例外的な動作を処理できます。
詳しくは例外処理の基礎を参照。
try-catch構文の使い方
try-catch構文にはインクルードなど必要な準備はありません。
try-catch構文は、tryブロックとcatchブロックの二種類からなります。
tryブロックには例外が発生するかもしれないコードを記述します。
catchブロックには例外が発生した際の処理を記述します。
try{ 【例外が発生するかもしれない処理】 } catch(【throwの型】 【変数名】){ 【例外が発生した時の処理】 }
tryブロック内では条件分岐を使って例外を検知します。
例外が発生したら例外をthrowします。
ただし、throwされた値を使わない場合変数名の指定は必要ありません。
if(【例外が発生したら】) throw 【値】;
throwすることを「例外を投げる」とも表現します。
throw文はreturn文と似た意味を持つと考えて良いでしょう。
return文が実行されるとその関数を抜け出し、returnした値になります。
throw文も実行されるとtryブロックを抜けますが、その後throwした値をcatchブロックに渡して実行します。
throwを行う際、値はchachブロックで定義した型を投げる必要があります。
サンプルコード
以下がサンプルコードです。
try_catch_sample1.cpp
#include <iostream> using namespace std; int main(void) { int input; try { cin >> input; if(input < 0) throw 0; } catch(int e) { cout << "error code : " << e << endl; } return 0; }
入力値が負数ならエラーとして、0をthrowしその値を表示しています。
cinはtryブロックの中である必要はありませんが、エラーがどこで発生するかがわかりやすいのでtryブロック内に記述しています。