programing

Java에서 사용자 정의 예외를 만드는 방법

randomtip 2022. 7. 16. 15:18
반응형

Java에서 사용자 정의 예외를 만드는 방법

Java에서 커스텀 예외를 작성하려면 어떻게 해야 합니까?

선택된 예외를 정의하려면 의 서브클래스(또는 서브클래스의 계층)를 만듭니다.다음은 예를 제시하겠습니다.

public class FooException extends Exception {
  public FooException() { super(); }
  public FooException(String message) { super(message); }
  public FooException(String message, Throwable cause) { super(message, cause); }
  public FooException(Throwable cause) { super(cause); }
}

이 예외를 던지거나 전파할 수 있는 메서드는 다음과 같이 선언해야 합니다.

public void calculate(int i) throws FooException, IOException;

...및 이 메서드를 호출하는 코드는 이 예외(또는 둘 다)를 처리하거나 전파해야 합니다.

try {
  int i = 5;
  myObject.calculate(5);
} catch(FooException ex) {
  // Print error and terminate application.
  ex.printStackTrace();
  System.exit(1);
} catch(IOException ex) {
  // Rethrow as FooException.
  throw new FooException(ex);
}

위의 예에서는, 이 검출되어 다음과 같이 재배열되고 있는 것을 알 수 있습니다.FooException이는 예외를 캡슐화하기 위해 일반적으로 사용되는 기술입니다(일반적으로 API를 구현할 때).

경우에 따라서는 모든 메서드가 예외 구현을 throws 절에서 선언하도록 강요하지 않을 수 있습니다.이 경우 체크되지 않은 예외를 만들 수 있습니다.체크되지 않은 예외는 확장되는 예외입니다(그 자체는 의 서브클래스입니다).

public class FooRuntimeException extends RuntimeException {
  ...
}

메서드는 던지거나 전파할 수 있습니다.FooRuntimeException예를 들어 선언하지 않은 예외입니다.

public void calculate(int i) {
  if (i < 0) {
    throw new FooRuntimeException("i < 0: " + i);
  }
}

체크되지 않은 예외는 일반적으로 잘못된 인수를 메서드에 전달하거나 배열 인덱스 경계를 위반하려고 시도하는 등 프로그래머 오류를 나타내기 위해 사용됩니다.

클래스는 Java 내에서 느려질 수 있는 모든 오류 및 예외의 루트이며 둘 다 의 서브 클래스입니다.서브 클래스는 던지거나 포착될 수 있습니다.단, 일반적으로 JVM 내부의 에러(예를 들어 프로그래머가 처리할 수 없는 에러)를 나타내기 위해 사용되기 때문에 캐치 또는 던지기에는 적합하지 않습니다.또한 캐치를 피해야 합니다.

public class MyException extends Exception {
        // special exception code goes here
}

다음과 같이 던집니다.

 throw new MyException ("Something happened")

캐치:

catch (MyException e)
{
   // something
}

선택한 예외의 경우:

public class MyCustomException extends Exception { }

말하면, '무엇이든'을 하는 Throwable던질 수 입니다.Exception(Runtime ) 또는 이에 않음)는, 다른 일반적인 의 슬로우 가능과는 로, 「」(「ThrowableThrowable」)입니다.Error일반적으로 JVM의 내부 기능 이외의 기능을 정상적으로 처리하도록 설계되어 있지 않습니다.

예외를 비공개로 만들 수도 있지만, 다른 패키지가 아니라 예외를 정의하는 패키지만 사용할 수 있습니다.

커스텀 예외를 던지거나 포착하는 것에 관한 한, 이것은 빌트인(built-in-throw via)과 동일하게 동작합니다.

throw new MyCustomException()

를 통해 캐치하다

catch (MyCustomException e) { }

언급URL : https://stackoverflow.com/questions/1754315/how-to-create-custom-exceptions-in-java

반응형