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
'programing' 카테고리의 다른 글
Vee-validate는 항상 true를 반환합니다. (0) | 2022.07.16 |
---|---|
Vuex - 네임스페이스 + mapMutations + 함수? (0) | 2022.07.16 |
팬텀을 사용하여 PDF를 생성하려고 하면 Vue.js가 렌더링되지 않습니다.js (0) | 2022.07.16 |
Vuex - 어떤 데이터가 스토어를 통해 전송되어야 합니까? (0) | 2022.07.16 |
페이지 새로고침 시에도 SPA 전체에서 데이터를 유지하는 방법 (0) | 2022.07.16 |