- PR -

NullReferenceExceptionの発生元オブジェクトの取得方法

投稿者投稿内容
まるひろ
会議室デビュー日: 2004/05/25
投稿数: 11
お住まい・勤務地: 東京
投稿日時: 2005-06-13 14:45
Visual Studio 2003 を使用してVB.NETの開発をしている者です。

先日既に稼動中のシステムにおいて障害が発生し、ログ出力しておいたExceptionクラスのToStringプロパティの情報によると、原因は"NullReferenceException"とありました。

ここまでは分かったんですが、「どのオブジェクトがNullだったのか」が分かりません。
"NullReferenceException"の原因となったオブジェクトの変数名か何かを取得する方法は無いのでしょうか?

または別の方法、たとえば例外の発生した行番号を表示するとか、アドレスを表示する等、「私はこうしている」な情報でも頂ければ幸いです。

よろしくお願い致します。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-06-13 14:50
ログにスタックトレースの情報を出力していないのなら、特定できないのではないでしょうか。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-06-13 14:51
直接的な回答ではないけれど、

引用:

または別の方法、たとえば例外の発生した行番号を表示するとか、アドレスを表示する等、「私はこうしている」な情報でも頂ければ幸いです。



ExceptionはMessageだけではなくほかにも豊富な例外情報を持っています。
StackTraceとか。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
まるひろ
会議室デビュー日: 2004/05/25
投稿数: 11
お住まい・勤務地: 東京
投稿日時: 2005-06-13 15:26
早速の返信、ありがとうございます。

Messageプロパティ、Sourceプロパティ、StackTraceプロパティ、TargetSiteプロパティ、ToStringプロパティを全て見てみましたが、ToStringプロパティが一番情報が豊富と判断して使用しております。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-06-13 15:41
こんにちは、じゃんぬ です。

引用:

Messageプロパティ、Sourceプロパティ、StackTraceプロパティ、TargetSiteプロパティ、ToStringプロパティを全て見てみましたが、ToStringプロパティが一番情報が豊富と判断して使用しております。


ToString() メソッドを何か勘違いしていませんか...
オブジェクトが表す値を文字列として返すことができるわけですが、
その他のプロパティなどの情報とは区別して考えるべきです。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-06-13 15:41
失礼しました。
ToString()でMessage, Source, StackTrace, 全てが出力されるのですね。
StackTraceが出力されていれば原因がわかると思うのですが?


burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-06-13 15:51
たびたび失礼しました。
リリースビルドだと、StackTraceには関数名しかでないので、実際にnullだった変数名(行数)が知りたいってことですね。。。
関数名だけでは予測できないほど、関数が大きいってことでしょうか。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-06-13 16:04
そういう事であれば、メソッドの先頭で事前条件をコーディングしておけば良いと思います。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/

スキルアップ/キャリアアップ(JOB@IT)