4

例外またはエラー(アクセス違反、インディソケットエラー、タイムアウトなど)が発生したときにすべてのダイアログボックスを無効にする方法はありますか?これらは私のプログラムで時々スローされますが、これらのエラーは決して致命的ではなく、無視することができます。ダイアログボックスだけが邪魔です。Delphi7を使用しています。

4

4 に答える 4

7

例外ウィンドウを表示したくない場合は、次の場所に移動してください。

Tools/Options/Debugger Options/Language Exceptionsを選択し、CheckBox Notify on language exceptionsを無効にします。これは、Delphi 2010 では有効です。

(Delphi 7 の同じ CheckBox かどうかは覚えていません)。

編集: 場合によっては、例外が避けられないことがあります。特に、インターネットから不明なファイルを操作している場合はそうです。したがって、あなたの例外は Indy の下で適切に処理されると思います。言語例外の通知をオフにするだけです

于 2012-06-13T18:43:04.650 に答える
5

Application.OnException イベントをカスタマイズできます。しかしIMVHO...

  • Application.OnException は、処理するのを忘れた例外をログに記録するのに最適です。
  • Application.OnException は、どうしてもパフォーマンスが必要な場合にのみ例外をキャッチするために使用する必要があります (この場合、実行パスの破損を予測する必要があります)。

と:

  • アクセス違反は致命的なエラーです。すべての AV を追跡して取り除く必要があります。
  • Application.OnException オーバーライドだけで例外ダイアログを非表示にすることはできません - try finally/except を正しい方法で使用する必要があります。
于 2012-06-13T18:34:45.330 に答える
2

Application.OnExceptionイベントをバイパスします。ただし、すべての例外を非表示にすることはお勧めしません。IMHOはデザインが貧弱です。

于 2012-06-13T18:26:50.407 に答える
0

@ GJ - Delphi 2007 にはそのチェック ボックスがあります。しかし、前述したように、アクセス違反は無視すべき例外ではありません。

于 2012-06-14T22:22:55.680 に答える