14

これはおそらく実際には問題ではないことはわかっていますが、何が正しいのか知りたいです。

コードに何らかのバージョンのthrow new SomeKindOfException(). このコードは潜在的に例外を発生させる可能性があると言えますか? または例外をスローしますか?

キーワードはthrowですので、どちらかというとそちらに傾いていますが、例外を発生させることもよく使われます...

それらは何らかの異なる意味を持っていますか?それらの1つは、他のものとの違いを暗示していますか? それとも、まったく同じことを意味する 2 つの単語だけですか?

4

5 に答える 5

28

C# の用語では、発生はイベントのコンテキストで使用され、スローは例外のコンテキストで使用されます。

throw/catch個人的には より組み合わせの方が美しいと思いますraise/catch

于 2009-06-12T09:30:11.910 に答える
3

C# について話すことはできませんが、C++ では "raise" が既に標準関数名として採用されていたため、"throw" が選択されました。

于 2009-06-12T09:30:39.380 に答える
1

さまざまな言語の用語は「スロー」を支持します。そして、これが使用されるキーワードであり、コンパイラ/言語のドキュメントでは常に例外が「スローされる」と言及されていることを考えると、「スロー」の方がはるかに理にかなっていることに同意します。

ただし、ベヒーモスの腹の中では、例外は実際にはRaisedであり、スローされません。デバッガーでEXCEPTION_RECORDを見つめるのに十分な深さがある場合は、 SEHの用語で話します。SEH では、コンパイラ/言語例外の特定のクラス ( eh、clr、vcpp ) は、多くの種類の例外の 1 つにすぎません。ページフォールトやスタックオーバーフローなどの例外が発生した元の条件は、ユーザーモードに「通知」していたカーネルによって「通知」された条件であり、ユーザーコードが自分自身に「スロー」していた例外ではなかったと思います、そのため、この用語はその文脈でより意味があります。

于 2009-06-12T11:24:03.053 に答える
0

投げるかレイズするかは問題ないようです。私にとっては同じ意味です。私はそれを書きませんが、私が話しているときは、通常「chuck an exception」と言います。

イベントの場合、「イベントを発生させる」または「イベントを発生させる」のいずれかを使用します。

于 2009-06-12T09:54:16.670 に答える