例外宣言違反

例外宣言に違反する例外がスローされています。

C++ のサブルーチンには、スローできる例外を列挙した例外宣言をオプションで含めることができます。このエラーは、例外宣言にリストされていない例外をスローしようとしている文をレポートします。この文が実行されると、C++ ランタイムは、代わりに unexpected() 関数を呼び出します。注意: Windows* OS ホストでは、例外宣言は無視されます。

ID

問題箇所

説明

1

例外のスロー

例外がスローされた場所

2

定義

サブルーチンが定義された場所

          
#include <stdio.h>

class Legal_Exception
{
public:
    const char* message;
    explicit Legal_Exception(const char* p) : message(p) { }
};

void I_Only_Throw_Legal_Exceptions() throw(Legal_Exception)
{
    // intended to say throw Legal_Exception("My Message");
    // This throws "const char *" object instead
    throw("My Message");
}

int main(int argc, char **argv)
{
    try {
        I_Only_Throw_Legal_Exceptions();
    }
    catch (Legal_Exception & e) {
        // Expects to get here, but it won't
        printf("Caught legal exception %s\n", e.message);
    }
    return 0;
}
        

© 2010 Intel Corporation. 無断での引用、転載を禁じます。