0

重複の可能性:
キャッチされた例外の引数を使用したスローとスローの違いは何ですか?
catch (…) は throw で機能しますか。オブジェクトなし?

これはクラッシュします:

try
{
    if(1)
        throw;
}
catch(...)
{
    printf("hi");
}

私はそれができると思っていましたが、そうではないと思います。情報が必要ないときの正しい投げ方とは?

4

2 に答える 2

6

「裸のスロー」は、すでにキャッチされた例外を再スローします。再スローするものがないとうまくいきません。

throw "Error!";あまり役に立たなくても、 のように何でも投げることができます。それ以外の場合は試すことができます

if (x == 1)
    throw std::runtime_error("x == 1 is not a good value here")`.
于 2012-08-26T19:02:36.647 に答える
1
#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");
}
于 2012-08-26T21:02:01.890 に答える