例外とエラーコードの使用方法と、それぞれが適切な場合のいくつかの説明を読んでいます。私は私の場合の例外を信じstlにエラーコードの例外がありますか?
は優れているが、私はある特定の問題があります:私はSTD :: runtime_errorを投げる(「これは誤りである」)、その後、私はそれをキャッチした場合
を、私は見つけることができませんエラーは何ですか、私はちょうどエラーがあったことを理解しています。
enum errorCodes
{
error_1,
error_2,
error_3
}
try
{
throw std::runtime_error(error_1,"can not do the job!");
}
catch (std::runtime_error & err)
{
switch (err.errorCode)
{
case error_1:
// I can not contunue, so re throw it
rethrow err;
case error_2:
// it is not important for me, so I can continue
break;
case error_3:
//Oh, I need to do something before continue
re_init();
break;
default:
rethrow err;
}
私ができる:私は探しています何
は、このようないくつかの事、私はそれをキャッチするときので、後に、私は、エラーコードを確認することができ、私はそれにエラーコードをスローして追加することができます例外でそのような例外を記述しますが、これを行う前に、STLやBOOSTにこの種の例外が存在するかどうか疑問に思っていますか?
は、これを行うのいずれかのより良い方法(私は例外の異なる種類をキャッチ、例外の異なる種類をスローしないように興味を持っては、私の視点から解決策がないからである。
* "異なるタイプの例外を投げるのは興味がありませんので、異なるタイプの例外を捕まえることは私の立場からの解決策ではありません。" *しかし、IMOは行く方法です。 (あなたの例では 'error_2'と' error_3'のみ) – Jarod42
@ Jarod42しかし、それはあなたが異なるタイプの例外を開発して投げる必要があることを意味します。私は2つのエラーがあるかもしれません:ファイル名が有効ではなく、メモリがないので、ファイルの内容をバッファに読み込む単純なタスクであっても、2種類の例外が必要です。 – mans
私はエラーコード([Demo](http://coliru.stacked-crooked.com/a/45ee82736f244a1b)の上で特定の例外([Demo](http://coliru.stacked-crooked.com/a/6b5d8f52b7bd966e) )) – Jarod42