- - PR -
NullReferenceExceptionの発生元オブジェクトの取得方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-13 14:45
Visual Studio 2003 を使用してVB.NETの開発をしている者です。
先日既に稼動中のシステムにおいて障害が発生し、ログ出力しておいたExceptionクラスのToStringプロパティの情報によると、原因は"NullReferenceException"とありました。 ここまでは分かったんですが、「どのオブジェクトがNullだったのか」が分かりません。 "NullReferenceException"の原因となったオブジェクトの変数名か何かを取得する方法は無いのでしょうか? または別の方法、たとえば例外の発生した行番号を表示するとか、アドレスを表示する等、「私はこうしている」な情報でも頂ければ幸いです。 よろしくお願い致します。 | ||||
|
投稿日時: 2005-06-13 14:50
ログにスタックトレースの情報を出力していないのなら、特定できないのではないでしょうか。
| ||||
|
投稿日時: 2005-06-13 14:51
直接的な回答ではないけれど、
ExceptionはMessageだけではなくほかにも豊富な例外情報を持っています。 StackTraceとか。 _________________ 「伝える」とは「人に云う」と書く。 http://d.hatena.ne.jp/NAL-6295/ | ||||
|
投稿日時: 2005-06-13 15:26
早速の返信、ありがとうございます。
Messageプロパティ、Sourceプロパティ、StackTraceプロパティ、TargetSiteプロパティ、ToStringプロパティを全て見てみましたが、ToStringプロパティが一番情報が豊富と判断して使用しております。 | ||||
|
投稿日時: 2005-06-13 15:41
こんにちは、じゃんぬ です。
ToString() メソッドを何か勘違いしていませんか... オブジェクトが表す値を文字列として返すことができるわけですが、 その他のプロパティなどの情報とは区別して考えるべきです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-06-13 15:41
失礼しました。
ToString()でMessage, Source, StackTrace, 全てが出力されるのですね。 StackTraceが出力されていれば原因がわかると思うのですが? | ||||
|
投稿日時: 2005-06-13 15:51
たびたび失礼しました。
リリースビルドだと、StackTraceには関数名しかでないので、実際にnullだった変数名(行数)が知りたいってことですね。。。 関数名だけでは予測できないほど、関数が大きいってことでしょうか。 | ||||
|
投稿日時: 2005-06-13 16:04
そういう事であれば、メソッドの先頭で事前条件をコーディングしておけば良いと思います。
_________________ 「伝える」とは「人に云う」と書く。 http://d.hatena.ne.jp/NAL-6295/ |