2011-03-22 12 views
1

例外がキャッチされない場合、C#プログラムではどうなりますか?実行時エラーのようなものでプログラムがクラッシュしますか?C#:例外がキャッチされないとどうなるか

+0

はい。それらを記録するために未処理の例外ハンドラを持つことをお勧めします。 –

+0

@Mitch:あなたはAppDomain.UnhandledExceptionイベントについて話していますか? –

+0

プログラミングをレゴボックスと考えてください。それを上に置いて何かを作って、それがどのように機能するかを見ても大丈夫です。 VSでクリーンアップする必要はありません。 –

答えて

0

お試しください!エラーによっては、通常はキャッチします。さて、すべての例外を捕捉する必要がある場合は、iが大きすぎる場合はa[i]のようなエラーが発生しますが、iは境界内に保持されるはずです(たとえばforループの場合)その例外をキャッチしません。

しかし、ユーザーからのデータ(GUIなど)を使用している場合は、ほとんどの場合、そのデータを検証します。

1

はい。

何か「例外的」なことが起こりました。あなたのプログラムはそれを処理する方法を知らないので、その時点で実行を停止し、「クラッシュする」必要があります。 finallyブロックのようなクラッシュの後に実行されるコードがありますが、基本的にパーティーはあなたのコードのために終わっています。

これらのイベントをログに記録して、クラッシュ時のシステム/プログラムの状態について多くの情報を提供することをお勧めします。 Logging Application Blockは、エラーを記録するためのより堅牢な自動方法の1つです。

0

自分で試してみてください!

class Program 
{ 
    static void Main(string[] args) 
    { 
     int[] arr = new int[1]; 
     arr[5] = 6; //throws an exception; what kind? 
    } 
} 

これをコンパイルしてデバッグモードで実行すると、質問に素早く回答できます。

または、いくつかのプログラムを書いてください。遅かれ早かれ、あなたのコードは例外をスローします。それは私たちのすべてに起こります、通常、私たちが数えることができるよりも多くの時間。コンソールまたはWinFormsアプリケーションでは、処理されない例外が通常はプログラムをクラッシュさせます。 ASP.NETでは、エラーページが生成されますが、Webサイト全体がクラッシュすることはありません。また、処理されない例外が発生した場合の対処方法を指定するカスタムコードを記述して、アプリケーションが正常に動作しなくなるようにすることもできます。

10

例外がキャッチされない場合、C#プログラムではどうなりますか?実行時エラーのようなものでプログラムがクラッシュしますか?

多分。

多分そうではありません。

の実装定義はです。

たとえば、「未処理の例外があり、Visual Studioがインストールされています。デバッガを起動してプログラムの状態を調べますか?」というダイアログボックスが表示されることがあります。

「未処理の例外がありました。これをMicrosoftに報告しますか?」というダイアログボックスが表示されることがあります。

デバッガですでに実行している場合は、おそらくデバッガが注意を促す何かをします。

ランタイムでは、実行することが許可されているものは何でも行うことができ、実行するように求められます。ランタイムはcatchブロックであるかない前にfinallyブロックを実行するためにそこに起こっているかどうかの認識していることを

は注意してください。これはコンソールアプリケーションで簡単に実証できます。クラッシュしてfinallyブロックに出力するアプリを作成します。

Unhandled Exception: System.Exception: Exception of type 
'System.Exception' was thrown at 
ConsoleApplication1.Program.Main(String[] args) 
finally running now 

どうしますか?ランタイムは、エラーを報告し、デバッガに実行の機会を与えたり、Microsoftに問題を報告したり、の前に finallyブロックを実行します。彼らがまったく動いたら。彼らはそうではないかもしれない。 何かが発生する可能性があります。ユーザーはプロセスを破棄したり、デバッガを起動して例外を修正したりすることができます。あなたが本当には例外がC#でどのように機能するかを理解したい場合は

あなたはこれを読んでください。

http://blogs.msdn.com/b/cbrumme/archive/2003/10/01/51524.aspx

+0

+1 Chrisのアーカイブされたブログへのリンクです。オールディーズ、しかしおいしい、すべての1つ! –

関連する問題