Java의 연쇄 예외

Java의 연쇄 예외

Java의 연쇄 예외를 사용하면 하나의 예외를 다른 예외와 연결할 수 있습니다. 즉, 하나의 예외가 다른 예외의 원인을 설명합니다.

  • 예를 들어, 메소드가 산술 예외 0으로 나누려고 했기 때문입니다.
  • 그러나 오류의 근본 원인은 제수를 0으로 만드는 I/O 오류였습니다.
  • 이러한 경우 연결된 예외는 오류의 기본 원인과 기본 원인을 모두 전파하는 데 도움이 됩니다.

: 다음 예제에서는 Java에서 체인 예외를 사용하는 방법을 보여줍니다.

Java
   // Working of chained exceptions   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {      try     {          // Creating an exception      NumberFormatException     ex     =     new     NumberFormatException  (  'Primary Exception'  );      // Setting the cause of the exception      ex  .  initCause  (  new     NullPointerException  (  'Root cause of the exception'  ));      // Throwing the exception with a cause      throw     ex  ;      }         catch     (  NumberFormatException     ex  )     {          // Displaying the primary exception      System  .  out  .  println  (  'Caught Exception: '     +     ex  );      // Displaying the root cause of the exception      System  .  out  .  println  (  'Cause of Exception: '     +     ex  .  getCause  ());      }      }   }   

산출
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception  

메모: 중첩 예외라고도 알려진 연쇄 예외를 사용하면 Java의 예외와 원인을 연결할 수 있습니다. 이는 예외의 원래 원인에 대한 정보를 전파하려는 경우에 유용합니다.

생성자

  • Throwable(던지는 ​​원인) : 원인은 현재 예외를 발생시키는 예외입니다.
  • Throwable(String msg Throwable 원인) : msg는 예외 메시지이고 cause는 현재 예외를 발생시키는 예외입니다.

Throwable이 연결된 예외를 지원하는 방법

  1. getCause() : 이 메서드는 예외의 실제 원인을 반환합니다.
  2. initCause(발생 가능한 원인) : 이 메서드는 호출 예외의 원인을 설정합니다.

예: 연결된 예외와 함께 사용자 정의 메시지 사용

Java에서는 Throwable 클래스의 생성자를 사용하여 예외를 연결할 수 있습니다.

Java
   // Use a custom message with chained exception   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {      try     {          // Code that might throw an exception      int  []     n     =     new     int  [  5  ]  ;      int     divisor     =     0  ;      for     (  int     i     =     0  ;     i      <     n  .  length  ;     i  ++  )     {      int     res     =     n  [  i  ]     /     divisor  ;      System  .  out  .  println  (  res  );      }      }         catch     (  ArithmeticException     e  )     {          // Creating a new exception with       // the original as the cause      throw     new     RuntimeException      (  'Error: Division by zero occurred'       e  );      }      }   }   

산출:

산출

설명: 이 예에서는 정수 배열이며 제수를 0으로 설정합니다.

  • try 블록 내에서는 배열의 각 요소를 0으로 나누어 ArithmeticException을 발생시키려고 합니다.
  • 이 ArithmeticException은 원래 예외, 즉 ArithmeticException을 원인으로 사용하여 새 RuntimeException이 생성되는 catch 블록에서 발견됩니다.
  • RuntimeException 및 ArithmeticException을 포함한 스택 추적을 표시하는 RuntimeException이 포착되지 않기 때문입니다.

연쇄 예외의 장점:

연결된 예외의 장점은 다음과 같습니다.

  • 이 예외는 기본 원인과 근본 원인에 대한 세부 정보를 제공하여 디버깅에 도움이 됩니다.
  • 완전한 예외 컨텍스트 전파를 활성화하여 오류 처리를 단순화합니다.
  • 이를 통해 복잡한 애플리케이션의 오류 추적성이 향상됩니다.

연쇄 예외의 단점:

  • 제대로 사용하지 않으면 스택 추적이 길어지고 읽기가 어려워질 수 있습니다.
  • 과도하게 사용하면 예외가 불필요하게 연결되면 혼란스러운 오류 메시지가 발생할 수 있습니다.
  • 개발자는 의미 있는 원인이 연결되어 있는지 확인해야 합니다. 그렇지 않으면 디버깅 중에 오해를 불러일으킬 수 있습니다.
추천 퀴즈 퀴즈 편집 질문 3개

Java에서 체인 예외의 주요 목적은 무엇입니까?

  • 에이

    예외의 근본 원인을 숨기려면

  • 하나의 예외를 다른 예외와 연관시키려면

  • 기음

    코드 성능을 향상하려면

  • 런타임 오류를 자동으로 수정하려면

설명:

연결된 예외를 사용하면 하나의 예외를 다른 예외에 연결하여 근본 원인을 확인할 수 있습니다.

예외의 원인을 설정하는 데 사용되는 방법은 무엇입니까?

  • 에이

    getMessage()

  • 세트예외()

  • 기음

    초기화원인()

  • 초기화원인()

설명:

initCause() 메서드는 예외의 기본 원인을 설정합니다.

예제에서는 어떤 유형의 예외가 NumberFormatException의 원인으로 설정되어 있습니까?

  • 에이

    IO예외

  • 산술 예외

  • 기음

    NullPointer예외

  • 런타임예외

설명:

이 예에서는 NullPointerException을 NumberFormatException의 원인으로 설정합니다.

Java의 연쇄 예외퀴즈가 성공적으로 완료되었습니다. 귀하의 점수:   2 /3 정확성 :  0% 설명을 보려면 로그인하세요 1 /3 1 /3 < Previous 다음 >