例外が発生した関数名を取得するには?

解決


pont  2003-06-30 23:59:31  No: 3975

はじめまして。投稿します。

例外が発生した関数名をエラーメッセージとして表示したいのですが、
どうすれば良いでしょうか?
具体的にはtry..except間でコールした関数のネストした先の方でエラーが発生しその発生場所を情報として出力したい場合です。


にしの  2003-07-01 20:41:11  No: 3976

MemCheckで実現しています。
http://www.yks.ne.jp/~hori/MemCheck.html
こちらを参照してください。
なお、Delphi7(おそらくDelphi6も)だと、MemCheckのサンプルが動きません。

MemCheck.pasの、最初のusesを、
uses Windows,SysUtils;
とし、
MemCheck.pasのPExceptionRecordを、SysUtils.PExceptionRecordとすれば動くと思います。
# PExceptionRecordがWindowsにも含まれるため


pont  2003-07-03 00:55:04  No: 3977

どうもご返事ありがとうございます。
早速ためして見たいとところですが、どうもサンプルソースを理解するのに
時間がかかりそうなので、結果は後ほど報告します。

(実はdelphiは1週間前から導入検証を行っていて全くの素人なので、javaのExceptionのような感じとで取得できるだろうと思い込んでましたが
結構難しいですね ちなみにdelphi7を使用しています)


pont  2003-07-03 02:59:34  No: 3978

さっそくMemCheck.pas::MyGetExceptionObject関数をトレースしてみました。
一応例外オブジェクトからPExceptionRecordを取得し、そこから
スタック情報のアドレスを進めて取得し...とやればなんとかtry..exceptで
キャッチした例外からほぼ期待した情報が取得出来そうです。(ほんとに?)
大変参考になりました。


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

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






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