重複の可能性:
キャッチされた例外の引数を使用したスローとスローの違いは何ですか?
catch (…) は throw で機能しますか。オブジェクトなし?
これはクラッシュします:
try
{
if(1)
throw;
}
catch(...)
{
printf("hi");
}
私はそれができると思っていましたが、そうではないと思います。情報が必要ないときの正しい投げ方とは?
重複の可能性:
キャッチされた例外の引数を使用したスローとスローの違いは何ですか?
catch (…) は throw で機能しますか。オブジェクトなし?
これはクラッシュします:
try
{
if(1)
throw;
}
catch(...)
{
printf("hi");
}
私はそれができると思っていましたが、そうではないと思います。情報が必要ないときの正しい投げ方とは?
「裸のスロー」は、すでにキャッチされた例外を再スローします。再スローするものがないとうまくいきません。
throw "Error!";
あまり役に立たなくても、 のように何でも投げることができます。それ以外の場合は試すことができます
if (x == 1)
throw std::runtime_error("x == 1 is not a good value here")`.
#include <exception>
try
{
if(1)
throw std::exception();
}
catch(...)
{
printf("hi");
}
あなたが何をしているかによっては、これはより良いかもしれません:
class my_exception : public std::exception {};
それから、
try
{
if(1)
throw my_exception();
}
catch(my_exception)
{
printf("hi");
}