Thread内で発生した例外処理のカスタマイズは?


初心者・・  2010-02-07 02:19:22  No: 37484

TForm1 = class(TForm)  で発生した例外は、TApplication クラスのExceptionイベントが呼ばれ、このイベントを拾うと例外処理のカスタマイズができました。
  //イベントの関連づけ
  Application.OnException :=  例外処理カスタマイズメソッド;

TThread1 = class(TThread)  でスレッドを立てて、その中で発生した例外はどのようにして拾うことができるのでしょうか。

発生した例外の内容を外部ファイルに書き込んでリスト化したいのです。
try〜except文では、例外が発生したことは拾えますが、メッセージがとれませんでした。

すみませんが、どなたかご教授ください。
宜しくお願いします。


とれますけど?  2010-02-07 03:33:34  No: 37485

もちろんヘルプくらい読みましたよね?


KHE00221  2010-02-07 04:00:57  No: 37486

procedure TThreadEx.Execute;
var
    I,J,K: Extended;
begin
    I := 10;
    J := 0;
    K := I / J;
end;

をやったとして

ThreadEx.OnTerminate := OnTerminate; 

if Assigned(TThreadEx(Sender).FatalException) = True then
begin
  //EZeroDivide
  Exception(TThreadEx(Sender).FatalException).ClassName;
  //0 による浮動小数点数除算例外 
  Exception(TThreadEx(Sender).FatalException).Message;
end;


初心者・・  2010-02-07 08:05:39  No: 37487

KHE00221さん、ありがとうございました。
当方がやりたかったことが伝わったようで、的を得た回答のようでした。

Threadで、例外が起きた際に、OnTerminateにイベントが入ってきたところまでは確認できました。

実際に同じようにコーディングしてみたのですが、
’FatalException’について未定義の識別子となります。

Delphi5を使用しているのですが、Delphi5は対応していないということでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加