728x90
반응형
Catch - try
오류가 예상되는 코드에 catch블럭으로 감싸놓고, 예외가 발생되면 try블럭으로 이동시켜 try블럭안의 코드를 실행하게 하는 예외처리 방법이다.
모든 예외클래스를 자바 개발자들이 예상하지 못하기 때문에, 직접 예외처리 클래스를 생성할 수 있다.
주로 예외처리의 모든 조상인 'Exception'을 extends로 상속받지만 Exception을 상속받는 경우에는 오류 발생을 기정 사실화 시켜 try - catch로 처리를 해야한다.
그래서 가능한 경우 선택적 예외처리인 RunTimeError를 선언하여 catch - try구문을 생략하고 코드를 간결화 한다.
public void uncheckedError() {
try {
throw new Exception();
// Exception은 try & catch구문 필수
} catch (Exception e) {
}
throw new RuntimeException();
// 프로그래머의 실수로 발생된 RunTimeError는 선택 unchecked
}
}
아래의 코드에는 오류클래스를 생성하고 선택적 예외처리인 RunTimeError를 선언하여 예외처리를 하였다.
예외처리를 할 때 super()를 통해 RunTimeError 생성자에 직접 문구를 지정해주어 (메서드 오버라이딩), 예외 발생 시 지정된 문구를 출력하도록 하였다.
public static void main(String[] args) {
try {
System.out.println("나이를 입력해주세요");
System.out.println("당신의 나이는 " + readAge() + "살 입니다.");
}
catch (Exception e) {
// e.printStackTrace();
System.out.println(e.getMessage());
}
}
public static int readAge() throws AgeInputException{
Scanner keyboard = new Scanner(System.in);
int age = keyboard.nextInt();
if(0<age && age<120) {
return age;
}
else {
throw new AgeInputException();
}
}
}
class AgeInputException extends RuntimeException{
public AgeInputException() {
super("유효하지 않은 나이를 입력하셨습니다");
}
// 부모 Exception을 상속받고 그 생성자를 오버라이딩하여 오류가 발생할 때
// super()안의 문구를 출력하게 함
}
728x90
반응형
'국비과정 > Java' 카테고리의 다른 글
람다식 인터페이스, 쓰레드 구현하는 방법 (0) | 2022.03.29 |
---|---|
자바에서 parameter를 여러개 받을 때 (0) | 2022.03.21 |
자바 인터페이스 interface (0) | 2022.02.19 |
자바 추상클래스 abstract (0) | 2022.02.18 |
프로젝트를 설계할 때 생각해야할 순서 (0) | 2022.02.17 |