예외강제 발생
컴파일 과정 혹은 실행에는 문제가 없지만 인위적으로 예외 발생시키는 것을 말한다. throw를 사용하여 발생시킨다.
강제로 예외 발생시키는 과정은 과부하를 주기 때문에 자주 사용하지는 않는다. 앞선 포스팅에서 설명하였듯이 throws 를 사용하여 예외객체를 전달하는 이유가 시스템 과부하를 줄이기 위함을 염두에 둔다.
참고로 throws 와 throw 는 사용목적이 다르니 용어 확실히 정리해두자
throws | 예외객체를 호출한 쪽에 전달하기 위해 사용 throws : 3인칭. 제3자가 처리하도록 던짐 |
throw | 예외를 일부러 발생시키기 위해 사용 throw : 1인칭. 내가 예외를 발생시킴 |
형식
throw new [예외객체];
예제
class throwEx {
public static void main(String[] args){
throwEx th = new throwEx();
try{
th.getWarning(15);
} catch(Exception e){
e.printStackTrace();
}
}
//예외가 발생하면 메서드를 호출한 곳으로 예외객체를 전달함
void getWarning(int a) throws Exception{
if(a > 19){
System.out.println("입장가능합니다");
} else{
//강제로 예외를 발생시킴
throw new Exception("미성년자입니다");
}
}
}
사용자 정의 예외
표준으로 정해진 예외 말고 프로그래머가 직접 예외 클래스를 생성하여 사용하는 것을 말한다.
예제
1) Exception 클래스를 상속받아 SelfException 라는 예외 클래스를 생성하였다.
class SelfException extends Exception{
String msg = "미성년자는 입장불가";
public selfException(String msg) {
super(msg);
}
}
2) 새로 생성한 SelfException 의 예외가 발생하도록 인자값을 넣었다.
public class SelfExceptionTest {
void getWarning(int a) throws selfException{
if(a > 19){
System.out.println("입장가능합니다");
} else{
throw new selfException("미성년자입니다");
}
}
public static void main(String[] args) {
SelfExceptionTest st = new SelfExceptionTest();
try {
st.getWarning(25);
st.getWarning(15); //예외 발생
} catch (Exception e) {
e.printStackTrace();
}
}
}
'Java > 기본' 카테고리의 다른 글
[Java] 컬렉션프레임워크102 - List 컬렉션 - ArrayList, LinkedList, Vector (0) | 2021.06.24 |
---|---|
[Java] 컬렉션프레임워크101 - 컬렉션프레임워크CollectionFramework 개념잡기 (0) | 2021.06.24 |
[Java] 자바 프로그램의 실행 과정 (0) | 2021.06.20 |
[Java] 유용한 클래스 - StringTokenizer (update.2021-11-19) (0) | 2021.06.20 |
[Java] 유용한 클래스 - Object 클래스 (0) | 2021.06.20 |