개발관련/오류노트

잡을 수없는 ChuckNorrisException

Rateye 2021. 6. 4. 10:34
728x90
반응형
질문 : 잡을 수없는 ChuckNorrisException

java.lang.ChuckNorrisException 잡을 수 없게 만드는 Java 코드 스 니펫을 구성 할 수 있습니까?

떠오른 생각은 예를 들어 인터셉터 또는 측면 지향 프로그래밍을 사용하고 있습니다.

답변

나는 이것을 시도하지 않았으므로 JVM ChuckNorrisException 을 던지는 코드를 컴파일 할 수는 있지만 런타임에 Throwable을 확장하지 않는 ChuckNorrisException 의 클래스 정의를 제공 할 수 있습니다.

최신 정보:

작동하지 않습니다. 검증 자 오류를 생성합니다.

Exception in thread "main" java.lang.VerifyError: (class: TestThrow, method: ma\ in signature: ([Ljava/lang/String;)V) Can only throw Throwable objects Could not find the main class: TestThrow.  Program will exit. 

 

업데이트 2 :

사실, 바이트 코드 검증기를 비활성화하면이 작업을 수행 할 수 있습니다! ( -Xverify:none )

 

업데이트 3 :

전체 스크립트입니다.

다음 클래스를 만듭니다.

public class ChuckNorrisException     extends RuntimeException // <- Comment out this line on second compilation {     public ChuckNorrisException() { } }  public class TestVillain {     public static void main(String[] args) {         try {             throw new ChuckNorrisException();         }         catch(Throwable t) {             System.out.println("Gotcha!");         }         finally {             System.out.println("The end.");         }     } } 

클래스 컴파일 :

javac -cp . TestVillain.java ChuckNorrisException.java 

운영:

java -cp . TestVillain Gotcha! The end. 

"extends RuntimeException"을 주석 처리하고 ChuckNorrisException.java 만 다시 컴파일 하십시오.

javac -cp . ChuckNorrisException.java 

운영:

java -cp . TestVillain Exception in thread "main" java.lang.VerifyError: (class: TestVillain, method: main signature: ([Ljava/lang/String;)V) Can only throw Throwable objects Could not find the main class: TestVillain.  Program will exit. 

확인없이 실행 :

java -Xverify:none -cp . TestVillain The end. Exception in thread "main" 
출처 : https://stackoverflow.com/questions/13883166/uncatchable-chucknorrisexception
728x90
반응형