정해진 예외처리말고 개발자가 직접 exception을 상속받아 예외처리하는 방법도 있다.
- 사용하는 메소드의 선언부에 'throws 예외클래스'가 있으면 메소드 사용시 try-catch 안에서 사용해야합니다.
.
.
예제
import java.util.*;
class AgeInputException extends Exception{
//Exception 클래스를 상속 받았음으로 AgeInputException클래스는 예외클래스임
public AgeInputException(){
super("유효하지 않는 나이가 입력되었습니다.");
}
}
class UserDefineException{
public static void main(String[] args) {
System.out.print("나이를 입력하세요 : ");
try
{
int age = readAge();
System.out.println("당신은 " + age + "세 입니다.");
}catch (AgeInputException e){
System.out.println(e.getMessage());
}
}
public static int readAge() throws AgeInputException{
// throws AgeInputException : readAge()메소드 실행시 AgeInputException이 발생하면 여기에서 처리하는 것이 아닌
// readAge()메소드를 호출한 곳에서 처리하도록 하겠다는 의미
Scanner sc = new Scanner(System.in);
int age = sc.nextInt();
if (age < 0){
// 나이가 음수로 들어왔으면
AgeInputException excpt = new AgeInputException();
// 예외를 객체(인스턴스)로 생성
throw excpt;
// excpt예외가 발생하였음을 JVM에 알리고, 예외처리 매카니즘을 실행
}
return age;
}
}
.
.
try-catch문을 사용하지 않고도 예외처리가 가능하다
main메소드 옆에 throws를 써서 예외처리를 하면 되는데
그러면 콘솔창에 어디서 예외처리가 됐는지 따로 나온다.
.
.
예제
import java.util.*;
class AgeInputException extends Exception{
public AgeInputException(){
super("유효하지 않는 나이가 입력되었습니다.");
}
}
class UserDefineException2{
public static void main(String[] args) throws AgeInputException {
System.out.print("나이를 입력하세요 : ");
int age = readAge();
System.out.println("당신은 " + age + "세 입니다.");
}
public static int readAge() throws AgeInputException {
Scanner sc = new Scanner(System.in);
int age = sc.nextInt();
if (age < 0){
AgeInputException excpt = new AgeInputException();
throw excpt;
}
return age;
}
}
728x90
반응형
'Java > 본격 Java 인터페이스' 카테고리의 다른 글
[Java] 자주사용되는 예외 (0) | 2020.07.01 |
---|---|
[Java] 예외처리 (0) | 2020.07.01 |
[Java] 인터페이스(interface) 다중 상속 (0) | 2020.07.01 |
[Java] Interface(인터페이스) (0) | 2020.07.01 |
[Java] Interface(인터페이스) - abstract class(추상화 클래스) (0) | 2020.07.01 |