0

私の問題は、内側のキャッチに例外をスローさせることができないことです。ここで ex をアウターキャッチに投げたい。

Runnable(){

public void run(){
try{
    try{
       }catch(Exception ex){
        System.out.println("Inner");
        throw ex; //I get an error here
    }
}catch(Exception e){
    System.out.println("Outer");
}}

エラー メッセージ: 報告されていない例外をキャッチし、スローするように宣言する必要があります

4

3 に答える 3

3

ブロックを関数に入れて……

private void myFunction() throws Exception {

    try{
       }catch(Exception ex){
        System.out.println("Inner");
        throw ex; //I get an error here
    }
}

次に、コードブロックから呼び出します

Runnable(){

public void run(){
    try{
        myFunction();
    }catch(Exception e){
    System.out.println("Outer");
}}
于 2013-09-13T11:11:57.047 に答える
2

これはうまく機能しているようです。ネストされた try-catch ブロックを作成することは、悪い習慣と見なされます。

public class Test implements Runnable {

public void run() {
    try {
        try {
            throw new IOException("bad"); //throw something here
        } catch (Exception ex) {
            System.out.println("Inner");
            throw ex; 
        } finally  {

        }
    } catch (Exception e) {
        System.out.println("Outer");
    }
}


public static void main(String[] args) {
    new Test().run();
}

}

// PRINTS: 
// Inner
// Outer
于 2013-09-13T11:27:35.873 に答える
0

これを試して。

Callable(){

public void call(){
try{
try{
   }catch(Exception ex){
    System.out.println("Inner");
    throw ex; //I get an error here
}
}catch(Exception e){
System.out.println("Outer");
}}
于 2013-09-19T15:04:24.703 に答える