http://studyhallweb.com/
プログラム学習室
[Home][C++言語]エラー処理

try〜catchを使ったエラー処理
プログラムを書いていると一つの処理を行うごとにエラー処理が入り、本来のロジックが見にくくなってしまうことがあります。
こんなときtry〜catchを使って、本来のロジックからエラー処理部分を切り離すとソースコードが見やすくなります。

// エラー処理の例

#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
    int iIn = 0;
    int iSum = 0;

    while(1) {
        try{
            cout << "0〜10の数字を入力してください\n";
            cout << "0の入力で終了します\n";
            cout << "数字 = ";
            cin >> iIn;
            if(cin.fail()) {
                throw 1;        // int 以外の型が入力されたとき
            }
            if(iIn < 0 || iIn > 10) {
                throw 2;        // 指定の範囲外の数字が入力されたとき
            }
            if(!iIn) {
                break;          // 0 入力でwhileループを抜ける
            }
            iSum += iIn;
            cout << "入力した数値の合計は " << iSum << " です\n\n";
        }
        catch(int e) {          // throw された値を受け取る
            switch(e) {
            case 1:
                cout << "数値を入力してください\n";
                cin.clear();
                cin.ignore(80, '\n');
                break;
            case 2:
                cout << "入力できる数字は0〜10です\n";
                break;
            }
        }
    }
    return 0;
}
ポイント
・本来の処理はtry{}の中に書き、エラー処理部分はcatch{}の中に書く
・エラー処理を行わせたいときはthrowする
 (throwする値はいろいろな型(charやlongなど)が指定できる)
・catchの後はthrowした直後には戻らないで、catch以後の行が処理される


[Home][C++言語]エラー処理