2016-06-11 4 views
-2

catch 블록이없는 try - finally 블록이 있다고 가정하면 try 블록 안에 예외가 발생합니다. 그 예외를 잡을 수 있습니까?catch 블록없이 예외를 catch 할 수 있습니까?

public static void main(String[] args) throws IOException{ 
    try { 
     throw new IOException("Something went wrong"); 
    } finally{ 
    } 
} 
+4

거기에있는 코드는 컴파일되지 않습니다. 그러나 catch 블록을 추가하여 예외를 잡을 수 있습니다. – Dando18

+2

예외를 잡으려면 'catch'블록을 사용하십시오. –

+2

질문이 이해가 안되네 :) –

답변

4

예, 가능합니다.

캐치되지 않는 예외 처리기를 사용할 수 있습니다. 프로그램의 책임은 프로그램이 포착하지 못한 예외를 잡아 내고 그 프로그램으로 무언가를하는 것입니다.

public static void main(String[] args) throws IOException { 
    Thread.setDefaultUncaughtExceptionHandler((thread, thr) -> thr.printStackTrace()); 
    throw new IOException("Something went wrong"); 
} 

setDefaultUncaughtExceptionHandler

예외는 임의의 스레드에서 발생되었으며 잡힌되지 않았을 때 호출되는 핸들러를 등록하는 방법이다. 위의 코드는 처리 된 throwable의 스택 추적을 인쇄합니다.

핸들러는 예외가 발생한 스레드와 throw 된 throwable을 인수로 취합니다.

Thread 인스턴스에서 setUncaughtExceptionHandler을 사용하여 스레드 당 처리기가 일 수 있습니다. 이 핸들러는이 스레드에서 발생 된 모든 잡히지 않은 예외를 처리합니다.

+0

들어 본 적이 없지만 작동합니다. – SHE

관련 문제