C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 例外処理のデバッグについて


(過去ログ 135 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■79355 / inTopicNo.1)  例外処理のデバッグについて
  
□投稿者/ ちよ (1回)-(2016/03/24(Thu) 12:01:06)

分類:[.NET 全般] 

使用環境:VisualStudio2008
言語:VB.net(.netFreamwork3.5)

はじめまして、ちよといいます。
VB.net自体あまり触ったことがないので、質問レベルがわからないのですが、

ビルド自体は成功(0エラー、警告が数百個)しているソースを実行した際に、

「System.ArgumentOutOfRangeExceptionの初回例外がXXXX.dllで発生しました。」
「System.NullReferenceExceptionの初回例外がYYYYY.exeで発生しました。」
がイミディエイトウィンドウに表示されました。

XXXXX.dllやYYYY.exeはソリューション内を検索しても該当するものが出てきません。
ステップ実行してもどこで引っかかっているのか見当もつきません。

どのように解析すればいいでしょうか。
引用返信 編集キー/
■79356 / inTopicNo.2)  Re[1]: 例外処理のデバッグについて
□投稿者/ shu (851回)-(2016/03/24(Thu) 12:40:12)
No79355 (ちよ さん) に返信

> ビルド自体は成功(0エラー、警告が数百個)しているソースを実行した際に、
まず警告をなんとかした方がよいです。


>
> 「System.ArgumentOutOfRangeExceptionの初回例外がXXXX.dllで発生しました。」
> 「System.NullReferenceExceptionの初回例外がYYYYY.exeで発生しました。」
> がイミディエイトウィンドウに表示されました。
>
> XXXXX.dllやYYYY.exeはソリューション内を検索しても該当するものが出てきません。
> ステップ実行してもどこで引っかかっているのか見当もつきません。
>
ArgumentOutOfRangeExceptionは配列などの参照でインデックスが配列の範囲外を指定しているような場合に発生します。

NullReferenceExceptionはインスタンス生成されていないNothingのオブジェクトに対しプロパティやメソッドを参照した場合に
発生します。
引用返信 編集キー/
■79357 / inTopicNo.3)  Re[1]: 例外処理のデバッグについて
□投稿者/ PANG2 (113回)-(2016/03/24(Thu) 12:52:38)
No79355 (ちよ さん) に返信
> どのように解析すればいいでしょうか。

Visual Studio の「デバッグ(D)」メニューの「例外(X)」で、
「スローされるとき」をすべてオンにして実行して下さい。
引用返信 編集キー/
■79358 / inTopicNo.4)  Re[2]: 例外処理のデバッグについて
□投稿者/ ちよ (3回)-(2016/03/24(Thu) 13:16:17)
No79356 (shu さん) に返信
> ■No79355 (ちよ さん) に返信
>
>>ビルド自体は成功(0エラー、警告が数百個)しているソースを実行した際に、
> まず警告をなんとかした方がよいです。
>


No79357 (PANG2 さん) に返信
> ■No79355 (ちよ さん) に返信
>>どのように解析すればいいでしょうか。
>
> Visual Studio の「デバッグ(D)」メニューの「例外(X)」で、
> 「スローされるとき」をすべてオンにして実行して下さい。

お二人のアドバイスで解析しなおしてみます。
ありがとうございました!

引用返信 編集キー/
■79359 / inTopicNo.5)  Re[3]: 例外処理のデバッグについて
□投稿者/ ちよ (4回)-(2016/03/24(Thu) 13:16:43)
No79358 (ちよ さん) に返信
> ■No79356 (shu さん) に返信
>>■No79355 (ちよ さん) に返信
>>
> >>ビルド自体は成功(0エラー、警告が数百個)しているソースを実行した際に、
>>まず警告をなんとかした方がよいです。
>>
>
>
> ■No79357 (PANG2 さん) に返信
>>■No79355 (ちよ さん) に返信
> >>どのように解析すればいいでしょうか。
>>
>>Visual Studio の「デバッグ(D)」メニューの「例外(X)」で、
>>「スローされるとき」をすべてオンにして実行して下さい。
>
> お二人のアドバイスで解析しなおしてみます。
> ありがとうございました!
>
解決済み
引用返信 編集キー/
■79360 / inTopicNo.6)  Re[2]: 例外処理のデバッグについて
□投稿者/ 774RR (391回)-(2016/03/24(Thu) 13:22:04)
「System.******Exception のハンドルされていない例外が mscorlib.dll で発生しました」
であるならば、これは
「プログラムが既に死んでいることが .NET Framework 内部で検出されました」
と読むべきで、逆に言えば「 mscorlib.dll がバグっているわけではない」のである。
つまり例外が発生した近辺だけをいくら調査しても無駄で、そこは「原因」ではない。

ミステリー小説的に書くなら「死体発見現場」はここです、と例外メッセージは言っている。
死体発見現場には犯人につながる手がかりとか証拠とかがあるはずで、それが「追加情報」だ。
例外メッセージは直接犯人を名指ししてるわけではないので mscorlib.dll を調査しても無駄っす。

NullReferenceException は初歩中の初歩の誤りが原因で出ることが予想される。
ArgumentOutOfRangeException は native C から入ったオイラは何度も遭遇してるけど、
これもかなり単純バグであることが予想される。

なので
>> ビルド自体は成功(0エラー、警告が数百個)しているソースを実行した際に、
>まず警告をなんとかした方がよいです。
これに1票。

引用返信 編集キー/
■79361 / inTopicNo.7)  Re[3]: 例外処理のデバッグについて
□投稿者/ ちよ (5回)-(2016/03/24(Thu) 15:14:23)
No79360 (774RR さん) に返信
> 「System.******Exception のハンドルされていない例外が mscorlib.dll で発生しました」
> であるならば、これは
> 「プログラムが既に死んでいることが .NET Framework 内部で検出されました」
> と読むべきで、逆に言えば「 mscorlib.dll がバグっているわけではない」のである。
> つまり例外が発生した近辺だけをいくら調査しても無駄で、そこは「原因」ではない。
>
> ミステリー小説的に書くなら「死体発見現場」はここです、と例外メッセージは言っている。
> 死体発見現場には犯人につながる手がかりとか証拠とかがあるはずで、それが「追加情報」だ。
> 例外メッセージは直接犯人を名指ししてるわけではないので mscorlib.dll を調査しても無駄っす。
>
> NullReferenceException は初歩中の初歩の誤りが原因で出ることが予想される。
> ArgumentOutOfRangeException は native C から入ったオイラは何度も遭遇してるけど、
> これもかなり単純バグであることが予想される。
>
> なので
> >> ビルド自体は成功(0エラー、警告が数百個)しているソースを実行した際に、
> >まず警告をなんとかした方がよいです。
> これに1票。
>

774RR さんアドバイスありがとうございます!
警告の数がたくさんあるので、どーしたものかなぁとためらっている部分はありますが(笑)、
そちらの方向で進めてみます!

引用返信 編集キー/
■79549 / inTopicNo.8)  Re[4]: 例外処理のデバッグについて
□投稿者/ Jitta (190回)-(2016/04/13(Wed) 21:30:16)
古いんだけど、気になってたので。

> 「System.ArgumentOutOfRangeExceptionの初回例外がXXXX.dllで発生しました。」
> 「System.NullReferenceExceptionの初回例外がYYYYY.exeで発生しました。」
> がイミディエイトウィンドウに表示されました。

 え〜っと、これは、Debug モードで実行したときに、実行は止まらないけれども、イミディエイト ウィンドウにこういう表示がある、ということでしょうか?
そうであるなら、無視してかまいません。

 No79360 、774RRさんの
> 「プログラムが既に死んでいることが .NET Framework 内部で検出されました」
に、基本的に賛成なのですが、.NET Framework の場合、救えるエラーも「例外」として送出されます。
そして、救える場合は、ハンドルされます。
No79360 には、「ハンドルされていない例外が mscorlib.dll で発生しました」と書かれています。
この、「ハンドルされていない例外」というところが重要です。
これは、「ここで例外が発生することは予定されていなかった」ということです。
元質問 No79355 は、「初回例外」であって、「ハンドルされていない」ではありません。
つまり、例外が発生することが予想されており、予想通り発生したが、計画通り扱われ(ハンドルされ)ました。
警告を0にしても、「初回例外が発生しました」は出ます。
でも、警告は0にしておくことを勧めます。

引用返信 編集キー/
■79563 / inTopicNo.9)  Re[5]: 例外処理のデバッグについて
□投稿者/ PANG2 (115回)-(2016/04/14(Thu) 13:38:01)
No79549 (Jitta さん) に返信

>>「System.ArgumentOutOfRangeExceptionの初回例外がXXXX.dllで発生しました。」
>>「System.NullReferenceExceptionの初回例外がYYYYY.exeで発生しました。」
>>がイミディエイトウィンドウに表示されました。
>
>  え〜っと、これは、Debug モードで実行したときに、実行は止まらないけれども、イミディエイト ウィンドウにこういう表示がある、ということでしょうか?
> そうであるなら、無視してかまいません。

いえいえ、重要な問題がはらんでいる可能性がありますので解析するべきでしょう。


http://garicchi.hatenablog.jp/entry/2014/01/07/121942
http://programmers.high-way.info/cs/ignore-exception.html
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -