私が上につまずいたいくつかのコードを見ながら:スロースローSTD対新しいのstd ::例外::例外
throw /*-->*/new std::exception ("//...
と私はいつもあなたが/あなたがここにnew
を使用してはならない必要はありませんと思いました。
正しい方法は何ですか、両方ともOKですか、違いがあれば?
私はPowerShellのブーストライブラリで "grepping"が表示されているものは、throw new
を使用しないでください。
P.S.また、throw gcnew
を使用するCLIコードがいくつか見つかりました。それは大丈夫ですか?
私は 'gcnewをスローすると便利だと思います。例外をキャッチするマネージコードが必要な場合誰かがそれを修正できますか? – jpalecek
.Netはポインタで例外を処理するので、gcnewをスローすることが適切です。 –
@SebastianRedl .Net "ポインタ"はあいまいかもしれませんか?確かにgcnewはそうではありません。 'System :: Exception'は一般的に、ガベージコレクトされたヒープ上の管理オブジェクトへの参照です。私はいつも 'gcnew'を投げて' System :: Exception^'と捕まえました。もちろん、私はいつもC++/CLIで 'finally 'を使用していますが、同じ' try'ブロックでC++例外と混同されることはよくありません。理由はわかりません。 –