• ベストアンサー

プログラムのつくり?

VB2008でプログラムを作成しています。 数値前提でプログラムを組むとInvalidCastExceptionはハンドルされませんでした。という例外が発生しました。 アプリ実行中にこのようなエラーができると何が良くないのでしょうか? 対策として例外処理をするという言葉はわかりますが、どのようにコーディングすればよいのでしょうか? Try Catch ex As Exception ここで何を書けば??? End Try 数値を期待して文字列が来た場合は、その後の処理に支障があるわけで、 例外処理はプログラムを止めない予防策で、この場合は、数値ではないと 次のプログラムに進む意味がないので、エラーメッセージを表示させて、その処理は終わりでよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.2

とりあえず、 ISNumeric関数を使ってチェックするとか、正規表現によるチェックを行うのがベターです。 アプリ実行中に例外が発生し、かつエラーをハンドリングしない場合は、プロセス自体が終了してしまいます。 ツール程度ならよいですが、 本番環境で常駐させて、ずーっと起動していたいものはこれでは困りますよね? アプリをこけないようにする工夫それが エラーハンドリングです。 TRY構文やON ERROR GOTOなどのことです。 エラーのときにメッセージを出したり、ログを残したりいろいろ使い道はあると思います。

その他の回答 (1)

回答No.1

いやそれは質問者さんの作ってるプログラムの仕様次第でしょう。 エラーだろうがなんだろうがかまわないならそのままでいいと思いますけど?

関連するQ&A

  • エラー発生時のプログラムの行番号の取得 VB2005

    エラー発生時にログを残すようにプログラムを書いているのですが。 Try  処理・・・ Catch  ログを書く処理 End Try エラーが発生した箇所の行番号は取得できないものでしょうか? アドバイスをいただけたら幸いです。 開発環境 VB2005 WinXP Pro

  • 例外処理と、ハンドルする範囲

    Try Catchや、throws Exceptionを使うべき時についてです。 ・0除算がありうるとき ・DLLや外部EXEを使用するとき、そっちの世界でのエラーをハンドルするとき ・ネットワークエラーや、DBサーバでのエラーをハンドルするとき ・ディレクトリがないとき・ファイルがないとき ・リフレクション?で、型判定・キャストを使用するときに、意図しない型のクラスが渡されてきた場合 などは、ハンドリングしつつ、それ用のエラーページにてエラーを表示しようと思いますが、 (1)みなさんはどのようなものまでハンドリングしていますか? 自分は、 Catch ex As System.xxx.xxxxxxException を何種類も書くメリットが感じられないので、 catch (System.Exception ex) で、上のもの以外のエラーについて、ex.Messageを出力しています。 (2)例外があったとき、エラーページに飛ばさずに、呼び元に扱いを任せる場合は(throwsさせる場合)どう使い分けをしていますか? (3)呼び出された側のクラスの、catch (Exception e)のブロックの中で、エラーページに飛ばしていますか?それとも、一番最初の呼び出し元まで、throws→throws→throws...して、一番最初の呼び出し元からエラーページに飛ばしていますか? .

  • JAVAのExceptionについて(エラーハンドリング)

    JAVAの例外の取り扱いについて お世話になります。JAVAでWebアプリケーションを開発しているものです。エラーハンドリングについて、悩んでいます。 私は、我流でプログラムの開発を行ってきたため、エラーハンドリングについて、あまり知識がありません。 今回とあるプロジェクトのリーダーを任されることになり開発を進めていたのですが、気がついたらメンバーのプログラムにtry,catch,throwsなどのエラーハンドリングがコーディングされていない状態で困っています。(みんな外国人で私が今まで一から教えていました。) そこで、皆様はどのようにJAVAで例外を扱っているのかをお伺いしたいと思い投稿いたしました。 私の少ない認識では、 (1)最上位のクラス、画面に一番近いクラスでtry,catchを行う (2)Exceptionはすべてのクラスの例外をcatchするが、一つ一つのエラーを明確に定義する方がよい(何のエラーが発生したのかわからない為) ⇒ただし、ここが一番の悩みどころです。エラーを設定する考え方として、配列を扱っている場合は、ArrayIndexとか、ファイルを扱っている場合はI/OExceptionとかソースコードを見て判断すべきでしょうか? (3)独自エラークラスを作る場合は、Exception,RunnableExceptionを敬称する。 ⇒そもそも何故、独自Exceptionクラスを作る必要があるのでしょうか?画面によってメッセージ、処理、遷移先を変えたいから? 上記が私の持っている知識と、疑問点です。 正直自分自身がよくわかっていないため、他の外国人メンバーに説明できません。とりあえず、Exceptionをthrowするように言っているのですが、このままじゃまずいと思い投稿しました。 どなたか忌憚のないご意見をお聞かせください。

    • ベストアンサー
    • Java
  • phpの例外処理がエラーをトラップしてくれない。

    以下のように例外処理を記述しした場合、 try{ //ここでエラー } catch (Exception $e){ $ErrorMsg="その他エラー:".$e->getMessage(); } tryの中で、0除算によるエラーが発生してもエラーをトラップして、例外 処理のcatchに飛びません。 どのように記述すればエラーをトラップできるのでしょか?

    • ベストアンサー
    • PHP
  • 0除算の例外処理ができない!!助けて!!

    0除算の例外処理ができない!!助けて!! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Try If (Flag = "数値") Then Flag = "演算子" Work = Total + Calc + Input Total = js.Eval(Work) Input = "" TextBox1.Text = Total End If Catch ex As Exception MessageBox.Show("Exception Error : 0除算を行いました。") End Try ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Total + Calc + Inputは、すべて文字列です。 実行すると、ポップアップではなく、テキストエリアにこんな文字列が・・・ 0除算しても例外が発生しない・・・ 0 / 0 ・・・NaN (非数値) 1 / 0 ・・・+∞ そもそも、0除算ってなんですか??? 0で割っても例外が出ない!!

  • 例外処理の使用方法(VB.NET)

    以前、PictureBoxの背景色変更について質問をさせていただいたものです。 (http://okwave.jp/qa3795334.html) その中で、数値を直接テキストボックスに入力し 以下の場合はエラーとして処理をしたいと思っています。 1.テキストボックスが空白の場合 2.0~255の範囲内に無い数字が入力された場合 3.上記2つ以外の全て Try~Catchを利用し、2は Catch ex As ArgumentException とし、3は Catch ex As Exception としたところうまくいきましたが テキストボックスが空白の場合、という処理がどうしてもわかりません。 考えられうる例外クラス名はすべて試したのですが どれもうまくいきませんでした。 上記3つの条件すべてを満たせる例外処理をするには いったいどうすればいいでしょうか?

  • Javaの例外処理の書き方について

    Javaの例外はErrorとRuntimeExceptionは書かなくてもいいが、 Exceptionはtryでcatchする必要があると聞きました。 しかし、java.langのStringを使っても例外処理は書きません。 なぜ、例外を書くやつと書かないやつがあるのですか? たとえば、java.langを使うとしたら、 ClassNotFoundException CloneNotSupportedException Exception の3つをjava.langを使うメソッドのブロックの上にtry文が必要だと思うのですが。

    • ベストアンサー
    • Java
  • エラー処理

    エラー処理について質問です。 私はどうもVBのエラー処理が頭についているせいか、Javaの例外処理等が面倒に見えてならないんです。 例えば下記はVBのエラー処理なんですが、引数を得て計算して値を返すというものなのですが、引数自体が間違えてたら意味ないということでチェックします。 色んなチェックをして1つでも間違えてたらVVV_ERRORに飛びます。 下記のように「桁数チェック」とか「数値か?」とか調べる場合、Javaだとどのようにして書いたらいいのでしょう? Javaならtry文に全部入れてしまえばいいのでしょうが… .....例 try { x = 10 / 5; y = 20 / 0; //エラー } catch ( ArithmeticException ex ) { System.out.println (" 0で割ることはできません"); .....略 要は下記VBのようにモジュールごとに独自のエラーコードが存在する場合、どうエラー処理を書いたらいいのかということです。 皆さんならどうしますか?よろしければご意見等お願い致します。 //////////////////////////////////////////////////////////////// public Function VVV(YYYYMMDD As String , Kotae As String) As String ...... vvv_err = "" On Error GoTo VVV_ERROR '***************引数チェック '8桁か? If Len(YYYYMMDD) <> 8 Then vvv_err = "8桁ではありません" GoTo VVV_ERROR End If '数値か? If IsNumeric(YYYYMMDD) = False Then vvv_err = "数値ではありません" GoTo VVV_ERROR End If .....略(同じようなIf文の引数チェックがたくさんあります) '***************ERROR処理 VVV_ERROR: vvv_err = vvv_err & err.Description & err.Number .....略

    • ベストアンサー
    • Java
  • try~catch

    php初心者です try~catchをわかりやすく教えてください throw new Exceptionが出現したら、catchまでの処理をしないでとばすとゆうことですか? try~catchを抜けたら、他の処理は普通に実行されるのでしょうか? try~catchのカッコ{で囲む範囲は大きくしたほうがいいでしょうか?(大きく囲むと処理スピードおそくなりますか?) try { throw new Exception('エラーが発生しました');  print "hoge"; } catch (Exception $e) {  echo '例外発生', $e->getMessage(), "\n"; }  print "foo"; よろしくお願いします

    • ベストアンサー
    • PHP
  • VS2013c#です。

    VS2013c#です。 今、環境変数からコンピューター名を取得する処理のテストを行っていたのですが、取得するところで、例外を発生させることが出来ません。 ------以下、コード------- string name; try {  // ここでエラー発生させてcatchに飛ばしたい name= Environment.MachineName; } catch(Exception ex) { …… } -----コード終了----- 机上確認なのでデバッグでcatchに飛ばすことが出来れば大丈夫です。 何か方法はありませんか? ご存知のかた宜しくお願い致します。