2015-05-02 3 views
2

Сценария:Java Assertion в Try с несколькими Фиксаторами

class Assert { 
    public static void main(String []args) { 
     try { 
      assert false; 
     } 
     catch (RuntimeException re) { 
      System.out.println("In the handler of RuntimeException"); 
     } 
     catch (Exception e) { 
      System.out.println("In the handler of Exception"); 
     } 
     catch (Error ae) { 
      System.out.println("In the handler of Error"); 
     } 
     catch (Throwable t) { 
      System.out.println("In the handler of Throwable"); 
     } 
    } 
} 

Я ожидаю «В обработчик ошибки», потому что AssertionError является подклассом Error, но он не показывает ничего и прекратить нормально. после этого, чтобы проверить выход, я добавил этот обработчик улова перед обработчиком ошибок.

catch (AssertionError t) { 
    System.out.println("In the handler of Throwable"); 
} 

в знаю, что это не очень хорошая практика, чтобы поймать ошибку, но если мы не должны поймать, почему программа не разрушилась его работу нормально?

ответ

1

По умолчанию утверждений отключены, добавить -ea в командной строке при выполнении кода с java:

java -ea Assert