자바 프로그래밍에서throw와throws 자구의 사용 방법을 상세히 설명하다
프로그램은throw 문장으로 명확한 이상을 던질 수 있습니다.Throw 문장의 일반적인 형식은 다음과 같습니다.
throw ThrowableInstance;
여기에서 Throwable Instance는 Throwable 클래스 또는 Throwable 하위 클래스 유형의 대상일 것입니다.간단한 형식, 예를 들어 int나char, 비Throwable 클래스, 예를 들어 String이나 Object는 이상으로 사용할 수 없습니다.Throwable 대상을 얻을 수 있는 두 가지 방법이 있습니다.catch 서브문장에서 파라미터를 사용하거나 new 조작부호로 만듭니다.프로그램은throw 문장을 실행한 후 즉시 정지합니다.뒤의 어떤 문장도 실행되지 않는다.가장 꽉 둘러싸인try 블록은 이상 형식과 일치하는catch 문장이 있는지 확인하는 데 사용됩니다.일치하는 블록이 발견되면 이 문장으로 전환하는 것을 제어합니다.만약 발견하지 못했다면, 차포위된try 블록을 검사하는 것이 이와 같다.일치하는catch 블록을 발견하지 못하면 기본 비정상 프로세서가 프로그램의 실행을 중단하고 창고 궤적을 인쇄합니다.
다음은 이상을 만들고 던지는 예시 프로그램입니다. 이상과 일치하는 처리 프로그램은 외부에 던지는 처리 프로그램입니다.
// Demonstrate throw.
class ThrowDemo {
static void demoproc() {
try {
throw new NullPointerException("demo");
} catch(NullPointerException e) {
System.out.println("Caught inside demoproc.");
throw e; // rethrow the exception
}
}
public static void main(String args[]) {
try {
demoproc();
} catch(NullPointerException e) {
System.out.println("Recaught: " + e);
}
}
}
이 프로그램은 같은 오류를 처리할 두 가지 기회가 있다.우선,main () 은 이상 관계를 설정한 다음demoproc () 를 호출합니다.demoproc () 방법은 다른 이상 처리 관계를 설정하고 새로운 Null Pointer Exception 실례를 즉시 던져줍니다. Null Pointer Exception은 다음 줄에서 포착됩니다.이상하게 다시 던져졌다.다음은 출력 결과입니다.
Caught inside demoproc.
Recaught: java.lang.NullPointerException: demo
이 프로그램에서는 Java의 표준 예외 객체를 만드는 방법에 대해서도 설명합니다.
throw new NullPointerException("demo");
여기, new는 NullPointerException 실례를 구성하는 데 사용됩니다.모든 Java에 내장된 실행 시 예외적으로 두 개의 구조 함수가 있습니다. 하나는 매개 변수가 없고, 하나는 문자열 매개 변수가 있습니다.두 번째 형식을 사용할 때, 매개 변수는 이상한 문자열을 지정합니다.객체가 print () 또는 println () 의 매개 변수로 사용되는 경우 문자열이 표시됩니다.이것 역시 getMessage () 를 호출해서 실현할 수 있습니다. getMessage () 는 Throwable에서 정의한 것입니다.Java throws 자구
만약 방법이 이상을 초래할 수 있지만 처리하지 않는다면, 방법의 호출자가 이상을 일으키지 않고 자신을 보호할 수 있도록 이러한 행동을 지정해야 한다.이 정도면 방법 성명에throws 자구를 포함할 수 있습니다.하나의throws 자구는 방법이 던질 수 있는 모든 이상 유형을 열거했다.이것은 Error나 Runtime Exception 및 하위 클래스를 제외한 모든 종류의 이상에 필요합니다.하나의 방법으로 던질 수 있는 모든 다른 종류의 이상은 throws 자구에 설명해야 합니다.만약 이렇게 하지 않는다면, 컴파일 오류를 초래할 것이다.
다음은 throws 자구를 포함하는 방법 설명의 일반적인 형식입니다.
type method-name(parameter-list) throws exception-list{
// body of method
}
여기, exception-list는 이 방법으로 쉼표로 분할된 이상 목록을 던질 수 있습니다.다음은 부정확한 예다.그 예는 잡을 수 없는 이상을 던지려고 시도했다.프로그램이 이 사실을 설명하기 위해throws 자구를 지정하지 않았기 때문에, 프로그램은 컴파일되지 않을 것입니다.
// This program contains an error and will not compile.
class ThrowsDemo {
static void throwOne() {
System.out.println("Inside throwOne.");
throw new IllegalAccessException("demo");
}
public static void main(String args[]) {
throwOne();
}
}
이 프로그램을 컴파일하기 위해서는 두 곳을 바꿔야 한다.첫째, throwOne () 이 Illegal Access Exception 이상을 일으킨다는 것을 선언해야 한다.둘째,main () 은 이 이상을 포착하기 위해try/catch 문장을 정의해야 합니다.올바른 예는 다음과 같습니다.
// This is now correct.
class ThrowsDemo {
static void throwOne() throws IllegalAccessException {
System.out.println("Inside throwOne.");
throw new IllegalAccessException("demo");
}
public static void main(String args[]) {
try {
throwOne();
} catch (IllegalAccessException e) {
System.out.println("Caught " + e);
}
}
}
다음은 예제의 출력 결과입니다.
inside throwOne
caught java.lang.IllegalAccessException: demo
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.