現在、Visual Studio Express C ++ 2008を使用していますが、キャッチブロックの順序についていくつか質問があります。残念ながら、インターネットで答えが見つからなかったので、専門家にこれらの質問を投げかけています。
catch(...)がcatchブロックの最後に配置されていない限り、コンパイルはエラーC2311で失敗することに気付きました。たとえば、次のようにコンパイルされます。
catch (MyException)
{
}
catch (...)
{
}
次はしませんが:
catch (...)
{
}
catch (MyException)
{
}
a。これがC++言語標準で定義されているのか、それともMicrosoftコンパイラが厳密であるだけなのかを尋ねることはできますか?
b。C#とJavaにも同じルールがありますか?
c。余談ですが、基本クラスと派生クラスを作成し、派生クラスのcatchステートメントの前に基本クラスのcatchステートメントを配置することも試みました。これは問題なくコンパイルされました。そのような慣習を防ぐ言語基準はありませんか?