ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

catchですべての例外

前回はcatchで受け取る例外の型を指定したが、型を指定しないですべての例外を受け取る方法もある。

catch(...) {
    // 処理
}

...は省略記号。これですべてのデータ型と一致する。

#include <iostream>
using namespace std;

void func(int i)
{
    if (i!=0) throw i;
}

void main()
{
    try {
        func(0);
        func(1);
    }
    catch(...) {
        cout << "catch " << endl;
    }
}

次のように、switchでのdefaultのような使い方もできる。

catch(int i) {
    // int型の例外のときの処理
}
catch(...) {
    // それ以外の例外のときの処理
}