質問編集履歴

1 コードインデント修正

ryo_se

ryo_se score 72

2017/02/08 09:24  投稿

[java]synchronizedを使用した時にcatchブロックに入らない
現在javaでsynchronizedを使用した処理を書いているのですが、
下記コードのsetメソッド内でエラーがあった場合に、
setメソッド、doメソッドどちらのcatchにも入らず、
コンソールにエラーが表示され強制終了されてしまいます。
デバッグ時の動きとしては
setメソッドでエラー
→catchに入らず、呼び出し元のdoメソッド内synchronizedの行にデバックのカーソルが移動
→更に進めると「InvocationTargetException」クラスの「super((Throwable)null);」の箇所に移動といった流れになります。
catchに入る対策方法をご教示いただければ幸いです。
↓以下修正致しました。  
 
```ここに言語を入力
        public void do (){
           synchronized(Inf.lock){
                           try{
                               edit = this.set(inf);
                           } catch (Exception e) {
                                //処理
                           }
                       }
                   }
public void doSync (){
 synchronized(Inf.lock){
  try{
   edit = this.set(inf);
  } catch (Exception e) {   
   //処理
  }
 }
}
                       
                            public String set( Inf inf){
public String set( Inf inf){
                       
                               try{
                                //エラー処理
                               }catch(Exception e){
                                           
                                       return null;
                }
   try{
       //エラー処理
   }catch(Exception e){
       return null;
   }
                               
                                       return "true";
                           }
   return "true";
}
                               
```
  • Java

    17719 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る