C++では、裸の文字列を例外として投げることができますが、C#ではException
を投げる必要があります。 C#で文字列を投げるのと同等のC#は何ですか?C++/C#例外スロー
例えば、C++ではthrow "something bad happened"
とすることができます。 Cでこれは.....だろうか?
C++では、裸の文字列を例外として投げることができますが、C#ではException
を投げる必要があります。 C#で文字列を投げるのと同等のC#は何ですか?C++/C#例外スロー
例えば、C++ではthrow "something bad happened"
とすることができます。 Cでこれは.....だろうか?
質問はかなり不明ですが、問題は「C++では文字列を投げることができますが、C#はどうですか?」
C#では、C++での処理と同様の方法で例外をスローします。主な相違点は、System.Exception
から派生したクラスだけを投げることができますが、C++では任意の型を投げることができます(std::exception
から派生したクラスだけを投げることが推奨されることもありますが、 C++で)。
C#で、単にいくつかのランダムを言って...、System.Exception
はそこではなく、例外をスローするための最も一般的な理由(ArgumentOutOfRangeException
、InvalidOperationException
を記述する様々な派生クラスのトラック輸送があります、OverflowException
ことに注意してください)これにより、問題のタイプを表現するより良い方法が得られます(タイプはcatch
ブロックで区別できます)。また、カスタムエラー文字列をコンストラクタ。これは単に文字列を投げるよりもはるかに優れています。なぜなら、例外が "012"の最大値まで "バブル"して、多かれ少なかれ問題をログに記録して終了することができるからです。それでも、一般的なSystem.Exception
を捕まえて、エラー文字列
これはC++でも可能ですが、既成の派生例外(<stdexcept>
)は.NET Frameworkで提供される例外よりもはるかに小さいことに注意してください。
もう1つの重要な違い(C++から来ている)は、C++ではスローに由来するスタックの巻き戻しがローカルオブジェクトを即座に破棄する(概念はRAIIを構築しています)、C#では破壊は非決定的ですそれらを指し示す瓶が範囲外になった後はいつでも)。このような場合にはすぐにリリースしなければならないクラスを持つことが重要です。IDisposable
インターフェイスを実装し、using
ブロックを使用してください。
C#では、Exceptionクラスから派生したオブジェクトのみをスローすることができます。 CLR自体も他の型をスローすることができます。もし本当にしたいのであれば、文字列を他の言語やILに直接スローするメソッドを書くことができるはずです。 C#で文字列例外としてキャッチすることはできません(例外タイプのない「キャッチ」を持つ未知の例外としてのみ)。
あなたの目標に応じてthrow new Exception("My string here");
で十分でしょう。 編集(ありがとうNeil):ただし、一度だけ実験を中止しない限り、独自の例外を作成する必要があります。
-1いいえいいえいいえいいえhttp://msdn.microsoft.com/en-us/library/ms173163.aspx System.Exceptionをスローしないでください。例外については、呼び出し元のコードがエラーを検出できるようにスローします。一般的な例外をスローすると、コード内で起こった可能性のあるさまざまな処理を行うことができなくなります。 – Neil
私はそれに答えることができますが、それは単に文字列を投げているだけです。 –
あなたの質問は意味をなさない – Divi
C++では、 'throw 'を行うことができますか?これはエラー"; "で、C#と同等です。 –