TForm1 = class(TForm) で発生した例外は、TApplication クラスのExceptionイベントが呼ばれ、このイベントを拾うと例外処理のカスタマイズができました。
//イベントの関連づけ
Application.OnException := 例外処理カスタマイズメソッド;
TThread1 = class(TThread) でスレッドを立てて、その中で発生した例外はどのようにして拾うことができるのでしょうか。
発生した例外の内容を外部ファイルに書き込んでリスト化したいのです。
try〜except文では、例外が発生したことは拾えますが、メッセージがとれませんでした。
すみませんが、どなたかご教授ください。
宜しくお願いします。
もちろんヘルプくらい読みましたよね?
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;
KHE00221さん、ありがとうございました。
当方がやりたかったことが伝わったようで、的を得た回答のようでした。
Threadで、例外が起きた際に、OnTerminateにイベントが入ってきたところまでは確認できました。
実際に同じようにコーディングしてみたのですが、
’FatalException’について未定義の識別子となります。
Delphi5を使用しているのですが、Delphi5は対応していないということでしょうか?
ツイート | ![]() |