tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルtry catchについて
記事No5389
投稿日: 2007/04/20(Fri) 14:32
投稿者みんこ
下の方の質問にも近いんですが、
tyr 〜 catch を組み込んでいても、これが効いてこない、ってことは
あるんでしょうか?

フォームをロード時に、
    Private Sub iniData()
        Try
            'SPREAD ヘッダー設定
            With dicSpdHeader
                .Clear()
                .Add("コード", 0)
                .Add("数", 1)
                .Add("予定数", 2)
                .Add("入力日", 9)
                .Add("品名", 0)
                .Add("日付", 2)
                .Add("日付", 3)
                .Add("日付", 4)
                .Add("日付", 5)
                .Add("日付", 6)
                .Add("日付", 7)
                .Add("日付", 8)
                .Add("ユーザ", 9)
            End With

        Catch ex As Exception
            Throw ex
        End Try
    End Sub

というようにヘッダーのデータを設定しているんですが、
tryの中のコードが走る際、catchがロックされません(catchが効いてこない)
同じソリューション内の画面でこのようなことが起こるのはこの画面だけなんですが
try〜catchを有効にするような設定とかありますか??

環境はVB2005です。

[ツリー表示へ]
タイトルRe: try catchについて
記事No5393
投稿日: 2007/04/23(Mon) 11:34
投稿者よねKEN
>tryの中のコードが走る際、catchがロックされません(catchが効いてこない)

Catchブロックが実行されていないと考えたのは、
どのような判断からでしょうか?

提示されているコードではキャッチしてスローしているだけなので、
キャッチされたかされなかったかって判断しづらいと思います。

ちなみに何の例外が発生したのでしょうか?
StackOverflowExceptionは.NET Framework2.0(VB2005もこれ)からは
キャッチされない仕様になりました。
(.NET Framework 1.1ではキャッチできた)

後、余談ですが、
> Try
>    〜
> Catch ex As Exception
>    Throw ex
> End Try


のように例外を再スローしたいのであれば、
Throw exではなく、Throwのみの指定を使うべきです。
(Throw exでは、スタックとレースの起点が変わってしまうために、
障害の原因を追えなくなります)

例)
Try
    〜
Catch ex As Exception
   Throw
End Try

[ツリー表示へ]