-
22-08-2019 - |
質問
'のVisual Basicのハングアップを取得するにはMSDNのヘルプドキュメントを実行してきまし。デザイナにラベルやタイマーコンポーネントをドラッグし、コンポーネントサブルーチン
に以下を追加します--oneタイマーを使用した例を試した後、Label1.Text = My.Computer.Clock.LocalTime.ToLongTimeString
デバッグ時にイミディエイトウィンドウの出力は以下の通りです。
タイプの最初のチャンス例外 「System.InvalidCastExceptionの」発生しました がmicrosoft.visualbasic.dllで
最初の タイプの機会例外 「System.InvalidCastExceptionの」発生しました がmicrosoft.visualbasic.dllでの
同じエラーがコンテキストメニューコンポーネントを使用して、以前のMSDNの例で発生します。私はこのエラーをTry...Catch...Finally
と上に移動しようとするべきでしょうか?それとも、私ははるかに深刻なものを扱うのですか?
解決
、それが唯一の例外は、あなたが呼ばれるコード内でキャッチされたことを意味するが、必ずしもコードが失敗したことを意味するものではありません。コードは、プログラムをクラッシュさせることなく、実行され、有効な値を返す場合、問題はありません。あなたがあなた自身のtry / catchブロックを実装するときにも、最初のチャンス例外に関するデバッグウィンドウに出力が表示されます。
他のヒント
[デバッグ]メニューで - >例外は、あなたはそれが後に巻き込まれることになる場合でも、例外が最初にスローされたときに停止するようにデバッガを有効にすることができます。あなたは何が起こっているかを知りたい場合は、これはそれを行うための最も簡単な方法です。
最初のチャンス例外では、例外の詳細を調べます。あなたは、スタックフレーム/トレースプロパティが表示されるはずです。そこでは、エラーが発生したの何行表示されるはずです。これはあなたを助ける必要があります。
IDEで、[ツール]> [オプション]> [プロジェクトおよびソリューション> VBのデフォルトと「ON」に厳格なオプションを設定しに行くしてみてください - あなたはそれを実行したときではなく、プロジェクトをコンパイルするとき、これはキャッチキャスティングの問題を助けるかもしれない。
。A「最初のチャンスexecption」必ずしもあなたのコードで問題を抱えているという意味ではありません。これは、IDEやコンパイラや他の関与する成分が発生し、エラーを処理し、その過程でデバッガが通知され、例外がイミディエイトウィンドウに報告されている意味するかもしれません。これは、トピックに関する優れた記事です。
http://blogs.msdn.com/davidklinems /archive/2005/07/12/438061.aspxする
最初のチャンス例外のデバッグおよびDIAGのための迅速かつ簡単な解決策はあります:
AppDomain.CurrentDomain.FirstChanceException += CurrentDomainOnFirstChanceException;
し、
private void CurrentDomainOnFirstChanceException(object sender, FirstChanceExceptionEventArgs firstChanceExceptionEventArgs)
{
if (firstChanceExceptionEventArgs.Exception is NullReferenceException)
{
// do your handling and debugging :)
}
}
例外処理が高価であるため、アプリケーションのパフォーマンスを損なうことができ、実行時に複数の最初のチャンス例外。特に、Webアプリケーションインチあなたはこのハンドラを追加し、特定の最初のチャンス例外を見て、それらを修正/回避しようとすることができます。