NOEMBLEM/エンブレムが設定されていません。

メールの詳細(メール表示)

件名:

[Q] 複数の例外を捕まえるには?

差出人: επιστημηさん "Fumiki Fukuda"<fukuda.fm…>
送信日時 2014/09/10 13:36
ML.NO [cppll:14099]
本文:

επιστημη@困ったときのcppll頼み です。

複数の例外がthrowされるシチュエーションがありまして。
# マルチスレッドなんかだと同時にthrowされるかも、みたいな。

例外をthrowする側では std::exception_ptr の集合: exception_list を
throwします。exception_list には begin()/end() があるので内包する
exception_ptrを列挙できます。そうすると、

try {
try {
ここで exception_list がthrowされる
} catch ( exception_list& errors ) {
for ( exception_ptr eptr : errors ) {
std::rethrow_exception(eptr); // [*] 再throw
}
} catch ( そのほか ) {
...
}
} catch ( foo_error& xxx ) {
// [*]でthrowされたのを捕まえる-1
} catch ( bar_error& yyy ) {
// [*]でthrowされたのを捕まえる-2
}

こんなカンジかしら。
...んでもこれだと exception_list のイッコ目が catch
されたらcatch節を抜けちゃうですよね?

複数の例外を捕まえるのって、どうやるんでしょ?

このエントリーをはてなブックマークに追加
添付:

このメールには下記のメールが返信されています:

更新順メールリスト