Java UncaughtExceptionHandler 인터페이스
2146 단어 자바
아래 의 예 와 같다.
for (int i=5;i >=0 ;i--) {
int value = 5 / i;
System.out.println(value);
}
main 방법 에서 직접 실행 하면 console 에서 틀 리 지 않 습 니 다.
그러나 코드 를 자세히 보면 i 가 0 일 때 이 코드 는 Arithmetic Exception 을 던 져 야 합 니 다. 왜 없 는 지, 프로그램 에 이상 이 없 기 때 문 입 니 다 catch.
하면, 만약, 만약...
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
e.printStackTrace();
}} );
다시 실행 하면 콘 솔 이 나타 납 니 다.
예외 스 레 드 "main"java. lang. ArithmeticException:/by zero information.
스 레 드 가 있 는 상황 에서주 스 레 드 에 대해 서 는 Thread 의 이상 을 포착 할 수 없습니다.
static class Task implements Runnable {
@Override
public void run() {
for (int i=5;i >=0 ;i--) {
int value = 5 / i;
System.out.println(value);
}
}
}
try {
Thread unCaughtableThread = new Thread(new Task());
unCaughtableThread.start();
} catch (Exception e) {
System.out.print("can do somthing");//
e.printStackTrace();
}
하면, 만약, 만약...
try {
Thread caughtableThread = new Thread(new Task());
caughtableThread.setUncaughtExceptionHandler(new SimpleUncaughtExceptionHandler());
caughtableThread.start();
} catch (Exception e) {
System.out.print("can do somthing");//
e.printStackTrace();
}
static class SimpleUncaughtExceptionHandler implements UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.err.println(t.getName() + " " +e.getMessage());// 。
e.printStackTrace();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.