throw
는 자바에서 예외를 명시적으로 발생시키는 데 사용하는 키워드입니다. 특정 조건에서 개발자가 직접 예외를 발생시키고, 그 예외를 처리할 수 있도록 하는 기능을 제공합니다. 주로 사용자 정의 예외를 던지거나, 특정 로직에서 의도적으로 예외를 발생시킬 때 사용됩니다.
public class Example {
public static void main(String[] args) {
throw new NullPointerException("강제 예외 발생");
}
}
throw
를 사용하는 상황throw
와 throws
의 차이throw
: 실제로 예외를 발생시키는 데 사용됩니다.throw new Exception("강제 예외 발생");
throws
: 메서드 선언부에서 예외가 발생할 가능성이 있음을 선언하는 키워드입니다.void method() throws IOException
package com.exception;
public class ExceptionEx09 {
public void method1( int num ) {
System.out.println( "시작" );
try {
// 입력값에 대한 검사
if (num >= 100) {
System.out.println("정상 입력");
} else {
// 입력값이 100 미만일 때 예외를 발생시킴 (throw 사용)
throw new Exception("비정상 입력");
}
} catch (Exception e ) {
// 예외 발생 시 처리 코드 (예외 메시지를 출력)
System.out.println( e.getMessage() );
}
System.out.println( "끝" );
}
// 예외를 직접 처리하지 않고 호출한 곳에서 처리하도록 예외를 던짐 (throws 사용)
public void method2(int num) throws Exception {
System.out.println("시작");
// 입력값에 대한 검사
if (num >= 100) {
System.out.println("정상 입력");
} else {
// 입력값이 100 미만일 때 예외를 발생시킴 (throw 사용)
throw new Exception("비정상 입력");
}
System.out.println("끝");
}
public static void main(String[] args) {
ExceptionEx09 ex = new ExceptionEx09();
ex.method1(10); // method1에서 발생한 예외는 내부에서 처리됨
try {
ex.method2(10); // method2에서 발생한 예외는 호출한 곳에서 처리함
} catch (Exception e) {
// method2에서 던진 예외를 처리함
System.out.println(e.getMessage());
}
}
}