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

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

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

Re[8]: VB2005 キャッチしたExceptionがNothing


(過去ログ 14 を表示中)

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

■4694 / inTopicNo.1)  VB2005 キャッチしたExceptionがNothing
  
□投稿者/ もーりー (1回)-(2007/06/22(Fri) 16:09:54)

分類:[VB.NET (Windows)] 

タイトルの現象が発生してこまっています。

環境:VisualStudio2005 TeamSuite Developer Edition
言語:VisualBasic2005
プロジェクトタイプ:Windowsアプリケーション


下記のようなコードがあります。

Private Sub XXX()
    Dim ret As Boolean
    Try
        'DB処理
        〜〜〜〜〜〜〜〜
        ret = True '← この部分で例外発生?(この処理の後必ずCatchに移動する)
    Catch ex As Exception
        Throw ex  '←デバッグするとこのexがNothing
    End Try
End Sub

ソース内のコメントのように動作するのですが、3つの疑問点があります。
1.常識的に考えてBoolean型変数にTrueを代入するだけで例外が発生するのはおかしい
2.ret = True で例外が発生していないとして、Catchに移動するのはおかしい
3.exがNothingであるのはおかしい

ちなみに、このソースをFunctionに変更すると正常に動作します。

上記のような現象に遭遇したことのある方がいらっしゃれば、原因と回避策を教えていただきたいです。


宜しくお願い致します。



引用返信 編集キー/
■4697 / inTopicNo.2)  Re[1]: VB2005 キャッチしたExceptionがNothing
□投稿者/ まどか (309回)-(2007/06/22(Fri) 16:37:26)
ありえませんねぇ。

まずはCatch句を外して例外ダイアログが表示されるか確認ですね。

ちなみにCatch句でブレークしているときはex=Nothingの状態です。
引用返信 編集キー/
■4698 / inTopicNo.3)  Re[2]: VB2005 キャッチしたExceptionがNothing
□投稿者/ iwaiwa (22回)-(2007/06/22(Fri) 16:42:09)
やろうとされていることがよく分からないのですが、
DB処理のところで例外が発生している可能性はないですか?
引用返信 編集キー/
■4707 / inTopicNo.4)  Re[1]: VB2005 キャッチしたExceptionがNothing
□投稿者/ taka (19回)-(2007/06/22(Fri) 17:56:57)
こんにちは

既にまどかさんがCatch外してダイアログを確認してみれば良いと仰っているので、
冗長なだけですが、

Private Sub XXX()
    Dim ret As Boolean
    Try
        'DB処理
        〜〜〜〜〜〜〜〜
        ret = True '← この部分で例外発生?(この処理の後必ずCatchに移動する)
    Catch ex As Exception
        Throw ex  '← ブレークポイントしかけるならここに仕掛けたほうがいいです
    End Try
End Sub

としてみましょう。
Catchの部分にブレークポイントを仕掛けた場合であれば、
まだExceptionのインスタンスがexに格納されていないのかNothingになりますし、
End Tryを超えるとスコープの範囲外になるのでこれまたNothingになります。

> ちなみに、このソースをFunctionに変更すると正常に動作します。
このFunctionで正常に動作するのが不可解ですね。

考えられる範囲だとステップ実行しているソースと実際に動いているアセンブリが異なるとか
#ASPをデバッグしているとよくそんな現象があったり

引用返信 編集キー/
■4709 / inTopicNo.5)  Re[2]: VB2005 キャッチしたExceptionがNothing
□投稿者/ もーりー (2回)-(2007/06/22(Fri) 18:09:15)
No4697 (まどか さん) に返信
> ありえませんねぇ。
>
> まずはCatch句を外して例外ダイアログが表示されるか確認ですね。
>
> ちなみにCatch句でブレークしているときはex=Nothingの状態です。

返信ありがとうございます。
確かに、Catch外して確認してみればよいですね。

> ちなみにCatch句でブレークしているときはex=Nothingの状態です。
はい。Throw ex の部分でブレークして確認しています。
またVBなのでErrオブジェクトも参照できると考え、イミディエイトウィンドウでErrオブジェクトを確認してみました。
エラーコードは0、Descriptionは空文字でした。


引用返信 編集キー/
■4710 / inTopicNo.6)  Re[2]: VB2005 キャッチしたExceptionがNothing
□投稿者/ もーりー (3回)-(2007/06/22(Fri) 18:10:14)
No4707 (taka さん) に返信
> こんにちは
>
> 既にまどかさんがCatch外してダイアログを確認してみれば良いと仰っているので、
> 冗長なだけですが、
>
> Private Sub XXX()
> Dim ret As Boolean
> Try
> 'DB処理
> 〜〜〜〜〜〜〜〜
> ret = True '← この部分で例外発生?(この処理の後必ずCatchに移動する)
> Catch ex As Exception
> Throw ex '← ブレークポイントしかけるならここに仕掛けたほうがいいです
> End Try
> End Sub
>
> としてみましょう。
> Catchの部分にブレークポイントを仕掛けた場合であれば、
> まだExceptionのインスタンスがexに格納されていないのかNothingになりますし、
> End Tryを超えるとスコープの範囲外になるのでこれまたNothingになります。
>
>>ちなみに、このソースをFunctionに変更すると正常に動作します。
> このFunctionで正常に動作するのが不可解ですね。
>
> 考えられる範囲だとステップ実行しているソースと実際に動いているアセンブリが異なるとか
> #ASPをデバッグしているとよくそんな現象があったり
>

>>ちなみに、このソースをFunctionに変更すると正常に動作します。
> このFunctionで正常に動作するのが不可解ですね。

そうなんです。根が深い問題のような気がします。


引用返信 編集キー/
■4711 / inTopicNo.7)  Re[3]: VB2005 キャッチしたExceptionがNothing
□投稿者/ もーりー (4回)-(2007/06/22(Fri) 18:21:37)
追加情報です。


Try ... Catch を外してみたところ、例外は発生しませんでした。
また、Try ... Catch内に1行もコードを記述していないのに、Catch句内に移動してしまいました。

VisualStudioのデバッグメニューの[例外]でCommon Language Runtime Exceptionのスローされる時にチェックを入れてみましたが、
Catch句内に移動する前に例外を検出することはできませんでした。

以上のことから、、、
ますます分からない状態に陥っています。
VisualStudioのバグなのでしょうか。
引用返信 編集キー/
■4712 / inTopicNo.8)  Re[4]: VB2005 キャッチしたExceptionがNothing
□投稿者/ iwaiwa (23回)-(2007/06/22(Fri) 18:34:00)
手元にあるVS2005でやってみましたが、例外は発生しませんよ。
>Try ... Catch内に1行もコードを記述していないのに、Catch句内に移動してしまいました。
↑これもないと思います。

自分のテストしたコードです↓

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ret As Boolean
Try
ret = True '← この部分で例外発生?(この処理の後必ずCatchに移動する)
Catch ex As Exception
Throw ex '← ブレークポイントしかけるならここに仕掛けたほうがいいです
End Try
End Sub
引用返信 編集キー/
■4714 / inTopicNo.9)  Re[5]: VB2005 キャッチしたExceptionがNothing
□投稿者/ なちゃ (41回)-(2007/06/22(Fri) 19:34:57)
No4712 (iwaiwa さん) に返信
> 手元にあるVS2005でやってみましたが、例外は発生しませんよ。
> >Try ... Catch内に1行もコードを記述していないのに、Catch句内に移動してしまいました。
> ↑これもないと思います。
>
> 自分のテストしたコードです↓
>
> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
> Dim ret As Boolean
> Try
> ret = True '← この部分で例外発生?(この処理の後必ずCatchに移動する)
> Catch ex As Exception
> Throw ex '← ブレークポイントしかけるならここに仕掛けたほうがいいです
> End Try
> End Sub
引用返信 編集キー/
■4715 / inTopicNo.10)  Re[6]: VB2005 キャッチしたExceptionがNothing
□投稿者/ なちゃ (42回)-(2007/06/22(Fri) 19:37:07)
すみません、上はミスです。
やっぱり何かの事情でソースと違うpdbを読んでたりしませんかね?
引用返信 編集キー/
■4718 / inTopicNo.11)  Re[7]: VB2005 キャッチしたExceptionがNothing
□投稿者/ もーりー (5回)-(2007/06/22(Fri) 21:34:42)
No4715 (なちゃ さん) に返信
> すみません、上はミスです。
> やっぱり何かの事情でソースと違うpdbを読んでたりしませんかね?

はい。そのようなことは行っていません。
引用返信 編集キー/
■4814 / inTopicNo.12)  Re[8]: VB2005 キャッチしたExceptionがNothing
□投稿者/ もーりー (6回)-(2007/06/26(Tue) 13:08:50)
No4718 (もーりー さん) に返信
> ■No4715 (なちゃ さん) に返信
>>すみません、上はミスです。
>>やっぱり何かの事情でソースと違うpdbを読んでたりしませんかね?
>
> はい。そのようなことは行っていません。

間が空きました。
結局原因不明で、現在も発生しております。
ただ別のコンピュータ上のVisualStudioでは発生しないことが確認できましたので、
この現象が発生するコンピュータのVisualStudioの問題かと考えています。

とりあえずVisualStudioを再インストールして対応したいと思います。
根本は解決していませんが、一旦解決済みとさせていただきます。

ご回答いただいた方々に感謝します。ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -