• ベストアンサー

例外処理

デバッグをしてみました。 すると,try・catch文までしか実行されていないことがわかりました。 public void init() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } 例外処理について調べてはみたものの、なぜこの部分で実行が止まってしまうのか、 解決につながるようなことが,みつかりません。 1.例外処理はどのような処理なのか 2.なぜ、try・catchで実行が終了してしまうのか 教えてください。

  • Java
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • chanple
  • ベストアンサー率50% (3/6)
回答No.2

質問にあるプログラムだけでは、詳しく答えることができないのですが、 1. 例外処理とは簡単に言ってしまえば、try文の中で オブジェクトが存在していないのに参照しようとした等 正常に実行できない例外があったとき、代わりにcatch文 の中を実行する処理です。 2. tryの中のjbInit()で例外が発生したため、catchの中の e.printStackTrace()の処理が実行されますが、多分この e.printStackTrace()の中で実行を終了させる命令が記述 されているためだと思われます。また、デバッグをするの であればe.printStackTrace()によってエラーメッセージ とその行番号が出力されていると思われるのでそこを参照 してみて下さい。

maruokundesu
質問者

お礼

ありがとうございます。 詳しく回答頂いたので,もやもやしていた部分がだいぶ消えました。 e.printStackTrace()の中を見直してみたいと思います。 ありがとうございました。

その他の回答 (1)

  • shosin
  • ベストアンサー率33% (8/24)
回答No.1

例外処理はtry文の中で例外が起きて実行できない時にcatch文の中でそのときに代わりに実行する処理です。 2についてはこれだけのプログラムではわかりません。

maruokundesu
質問者

お礼

ありがとうございます。 catch文で代わりに実行するということは, Errorが出ないように予測した対策をcatch文に入力をして おくということで,良いのでしょうか? 2については,プログラム量が多い等の理由もあって,残念ながら 載せることができません。すいません。

関連するQ&A

  • C++の例外処理

    お世話になります。 現在C++でプログラミングを行っていますが、例外処理で困っています。 次のようなコードを書きました。 try{   m_Session.DestroyDatabasePool();   }catch(CException e){   m_Share.WriteLogFile("キャッチ中", LOG_INFO ); } しかし、これだとcatchが行われず、catch(CException e)部分を(...)にすると例外処理が実行されます。 例外の詳細を知りたいので、どうしても(CException e)で行いたいです。 説明が不十分かもしれませんが、何かご存知でしたら、ご教授お願いします。

  • PHPの例外処理

    PHPの例外処理について教えてください function test() {   try{    $a = 10;    $b = 0;    $result = $a/$b;   }   catch(Exception $e){    //エラー処理   } } 上記でcatchが実行されるためにはどのようにすれば良いでしょうか?例えば if($b == 0) {   throw new Exception('例外'); } を「$result = $a/$b;」の前に書いておくなどすればcatchされるのはわかりますが、 想定されるすべての例外のthrow処理を記載するなんてことはしたくありません。 実行してエラーだったら自動的にthrowされる、なんていうことはPHPでは無理でしょうか?

    • ベストアンサー
    • PHP
  • 例外処理がまったくわかりません!!

    下のプログラミングについていくつか質問があります。 (1)etest()メソッドってなんですか? (2)存在しないファイルを開くってどういうことですか? (3)FileReader( )対応catch節、Close( )対応catch節ってなんですか? (4)あと、プログラミングあとの本の解説の部分がよくわかりません。抜粋してみます。 「一般的な例外クラスはxxxExceptionというクラス名をしています。このタイプの例外クラスはみな「Exception例外クラス」をスーパークラスにしています。この場合、「catch(Exception e)」を使うとすべてのxxxException例外を補足できるという仕様になっています。ですから下のetest( )メソッドは次のように、ひとつのcatch節で記述することができます。このようにしても表示される4エラーメッセージ(eで指示)は、正しく発生例外(FileNotFoundExceptionまたはIOException) 対応のものになります。」 public static void etest( ) { try { // try節を書く FileReader fr = new FileReader("xfile.txt"); } catch (FileNotFoundException e) { // FileReader( )対応catch節 System.out.println("例外1: " + e); // 例外情報を表示 return; // 戻る } catch (IOException e) { // Close( )対応catch節 System.out.println("例外2: " + e); // 例外情報を表示 return; // 戻る } System.out.println("ファイルは正しくオープンされました"); } } よろしくお願いします。

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

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

    • ベストアンサー
    • PHP
  • 例外処理の作法

    基本的なことですみません、 Try~Catch構文で例外をハンドリングする際に「RuntimeException」と 「Exception」のどちらでCatchするのが良いのでしょうか?。 雑誌のサンプルを眺めているのですが、使い分けのやり方が 良くわかりません。 すみませんがアドバイス頂ければ幸いです。

    • ベストアンサー
    • Java
  • doPost+doGet

    public class Class{ public void doPost (HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException try{ //処理 }catch(Exception e){ e.printStackTrace(); } } public void doGet (HttpServletRequest request,HttpServletResponse response){ try{ doPost(request, response); }catch(Exception e){ e.printStackTrace(); } } } この処理は、doGetで送信されたものをdoPostに送って処理するということでよろしいのでしょうか? 分かる方がいましたら、よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaの例外処理の書き方について

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

    • ベストアンサー
    • Java
  • データベース接続をどのように関数にすればよいか分かりません

    この処理を何回か使うので関数にすることになりました。 しかし、例外を考えてtry、catchを使うとすると 処理を入れられないで接続終了になってしまいます。 throwsで全部例外をなげるしかないのでしょうか? 分かる方がいましたら、教えてください。 よろしくお願いします。 public void Connect()throws ServletException,IOException {  try{   String drv = "org.gjt.mm.mysql.Driver";   String url = "jdbc:mysql://localhost/keijiban?useUnicode=true&characterEncoding=sjis";   String usr = "";   String pw = "";   Class.forName(drv);   cn = DriverManager.getConnection(url,usr,pw);  //処理を入れる所////////////////////////  }catch(Exception e){   e.printStackTrace();  } finally {   if (cn != null) {    try {     cn.close();    } catch (SQLException e) {     throw new ServletException(e);    }   }  } }

    • ベストアンサー
    • Java
  • fsockopenの例外について

    お世話になります。 現在、fsockopen関数を利用してソケット通信を行うシステムを開発しております。 上記、システムを利用する中で考えられる例外として「apacheが停止しているサーバーに通信を行った場合」というのを想定して、例外処理を作成しております。 例外処理をtry catchによって検知しようとしたのですが、try catchでは受け取れませんでした。 ソースは下記のとおりです。 $api_url = "http://localhost/webapp/test"; $api_arr = parse_url($api_url); try{ // ソケット通信開始 $fp = fsockopen($api_arr["host"], 80, $errno, $errstr, 30 ); }catch(ErrorException $e){ echo "Error - failed to connect to the API - ".$e->getMessage(); exit; }catch(Exception $e){ echo "hoge2"; } 上記、ソースをunixのコマンドから実行した場合に出力されたエラーは下記のとおりです。 Error: fsockopen(): unable to connect to localhost:80 (Connection refused) もし、お分かりになる方がおられましたら、ご教示お願い致します。

    • 締切済み
    • PHP
  • 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

専門家に質問してみよう