tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: Exceptionがcatchできない
投稿日: 2009/12/05(Sat) 11:01
投稿者ダンボ
Hongliang さん、早々にありがとうございます。

> つまり PropertyIdList に &H501B が含まれているかどうかの事前チェックをせずに
> 直接取りに行くってことですね?

はい、含まれている場合が多いので。投機的処理ですね。

> catch できないっていうのはどういう状態になるのでしょう?

catch句があるのに、そこに飛ばずに、ArgumentException 例外を伝える例外ダイアログが
出てきます。

> 例外が出るなら、そのスタックトレースはどうなっていますか?

調査方法がわかりません。例外ダイアログから見れるのでしょうか?

> サムネイルを持っている(&H501B の PropertyItem がある)画像ファイルの場合はどうなりますか?
> 逆に持っていない画像の場合は?

100%再現しますが、サムネイル有りなら思った通りの動作、無しなら必ず例外ダイアログです。


> > fs.Close()
> FileStream に Using を使っているのですからこれは不要です。

Disposeを代行してくれるとだけ思っていました(もっともDisposeにはCloseも含まれるか)


> MemoryStream はコンストラクタの引数に Byte 配列を受け取ることができます。
> http://msdn.microsoft.com/ja-jp/library/e55f3s5k.aspx
> これを使えば imageBytes や Write メソッドの呼び出しは不要です。渡した Byte() で初期化済みになるので。
> また、画像のソースとなる Stream は、画像を使わなくなるまで Close すべきではありません。
> 特に MemoryStream は Close するメリットは無いと言っていいでしょう。

ありがとうございます。試してみます。

> > Using fs As IO.FileStream = IO.File.OpenRead(path)
> >         Finally
> >             fs.Close()
> >         End Try
> > End Using
> Using はこの Finally 節を自動的に実装してくれる機能です(Nothing チェックとかも入りますが)。
> わざわざ自分で Finally 節を書くなら Using の意味がありません。
> この Finally 節は不要です。

ありがとうございます。Usingは偉いんですね。なんだか例外をcatchできないのは
UsingとTry_Catch_Finallyとの組み合わせの問題のような気がしてきました。
(というかそれ以外にあり得ないのでは)

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。