dポイントプレゼントキャンペーン実施中!

例外ってIf文の中に入れますか?If文の外でTry...Catchしますか??

Sub Cal(By Val Data As String)

 If ( Flag = "hoge") Then
 Total = js.Eval(Work)
 End If
End Sub

それと、”エラーコードをテキストの説明に変換する”FormatMessage関数を使おうと思っています。

「例外処理 = FormatMessage関数」という図式は古いですか?いまはもっと違う方法ですか?

A 回答 (3件)

FormatMessage関数を初めて聞いたので突っ込まなかったのですが、ちょっと調べてしました。


http://msdn.microsoft.com/ja-jp/library/cc428939 …
Win32APIを利用した関数なんですね。

戻り値が存在していろいろできるみたいですね。
・関数が成功すると、バッファに格納されたバイト数(Unicode 版の場合は文字数)が返ります(終端のNULLを文字除く)。
・関数が失敗すると 0 が返ります。拡張エラー情報を取得するには、 GetLastError 関数を使います。

調べた結果ですが、これを必要とするのであれば使ってもいいと思います。

但し、例外処理でメッセージを出したいだけであれば MessageBox.Show を使ってしまうと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

関数が失敗すると、コンパイラがそのエラー情報をコードではなく、
文字列にして説明してくれるらしいです。

FormatMessageがあまり使われないことがわかって、大変為になりました。

お礼日時:2009/07/17 14:57

サンプルに載ったコードを見る限りだとIFの外にTry-Catchを書きます。



■理由
この変数「Flag」の型がわからない為、例外を発生させる可能性がある。
多分、文字列のメンバ変数であろうと予想はできますが確証が持てないので・・・。

また、Try-Catchに関してですが、基本的には外で書きたい派です。
予想できる例外なんて実装の時点で対応するべきで、例外と考えませんし・・・。

この回答への補足

ところで、FormatMessage関数を使うのは間違いですか?
MessageBox.Show("あなたは禁断の0除算を行いました")を使いますか???

補足日時:2009/07/16 16:41
    • good
    • 0
この回答へのお礼

ありがとうございます。

「予想できる例外なんて実装の時点で対応するべきで、例外と考えません」

かっこいいw

簡単な電卓なので、Flagの型に変な型入らないです。
Eval()の上下を囲むことに決意しました。

お礼日時:2009/07/16 16:38

If文の中か外かはまったく気にしません。


あくまで「必要な場合に必要な範囲で」使います。

あと,Try - Catchはあまり使いません。
ref: むやみにキャッチしないでね。ゴールキーパー以外はハンドで反則ですよ。 - NAL-6295の舌先三寸
http://d.hatena.ne.jp/NAL-6295/20050909/p1

この回答への補足

ところで、FormatMessage関数を使うのは間違いですか?
MessageBox.Show("あなたは禁断の0除算を行いました")を使いますか???

補足日時:2009/07/16 16:39
    • good
    • 0
この回答へのお礼

あがとうございます。

0除算のときに例外処理を書きたいと思っています。

Try...Catchだと、ポップアップを出して処理が終了してしまうんですか。
まあ、処理が終了してくれていいんですけど。

Try-Finallyで、ポップアップして処理を抜け出すようにしたいです。
出来ますか?

Throwしたらまずいですよね・・・無い方がましかも。

お礼日時:2009/07/16 16:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています