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

タイトル Re^3: VB2005での0除算例外について
投稿日: 2007/12/11(Tue) 19:32
投稿者魔界の仮面弁士
> VB6.0では例外処理は
>     Try
>     'ソースコード
>     Catch ex As Exception
>         'エラー時の処理
>     End Try
> の形で済ましてしまうことが多く、
??? VB6 では、Try ステートメントはサポートされていないハズです。
On Error ステートメントならありますけれどね。

それと、Catch 句ですべての Exception を拾っていますが、むやみやたらと
Catch してしまうのはマズイです。処理すべき例外のみ拾うようにしましょう。
(拾った例外が想定外のものであったなら、Throw しなおした方が良いですよ)
http://www.ailight.jp/blog/kazuk/articles/6298.aspx


> 除算を実行する前に、整数の数式は必ず Double 型に拡大変換されているので
> オバーフローの例外になるのですね。
違います。
型が Double になったからではなく、結果が「無限大」だったからです。

Double に拡大変換された後の値が、Integer.MinValue 〜 Integer.MaxValue の
範囲内にあるならば、CInt してもオーバーフローにはなりません。


> データ型を「Decimal」に変換することで思い通りの処理ができるようになりました。
> 例外処理をキャッチすることばかりにとらわれていたのでデータ型を変更することを
> 思いつきませんでした(^^;
あれれ。たるとさんが参考にされていたサイト(猿頁)には、はっきりと
『ちなみに、Decimal型の場合は事前のDouble型変換が行われないので、0除算例外が発生します。』
という記述があったはずなのですが……。

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

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