[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.
💡예외처리란?
- 예외 : 프로그램 실행 도중에 발생하는 '예외적인 상황'이며, 이러한 상황을 처리하는 것이 예외처리.
- 예외적인 상황
- 파일을 읽으려고 하는데 해당 파일이 존재하지 않는 경우
- 나눗셈을 하려고 두 수를 입력 받았는데 제수가 0인 경우
- 예외적인 상황
- Java 에서는 예외처리를 위한 문법을 제공 (try ~ catch 문)
- if문을 이용한 예외처리의 문제점
- if문을 이용하여 예외처리를 할 경우 프로그램의 주 흐름을 구성하는 코드와 예외처리 코드가 혼재되어 코드가 복잡해짐.
💡예외 클래스의 종류
- 최상위 클래스 : Throwable 클래스
- 하위에는 Exception과 Error
- Error 클래스
- Error클래스를 상속한 클래스들은 매우 심각한 오류상황
- 자바 프로그램 외에서 발생한 오류로 프로그램 내에서 해결 불가능
- ex) OutOfMemory 등..
- Exception 클래스
- RuntimeException 계열의 예외를 Unchecked Exception이라하고 그외의 것들을 Checked Exception이라고 함.
- Checked Exception IOException
- 반드시 예외처리가 강제됨
- 예외처리를 하지 않으면 컴파일 에러가 나타남.
- Unchecked Exception = RuntimeException
- Exception 클래스와 달리 try ~ catch 문 또는 throws 절을 이용한 예외처리가 필요하지 않음.
- Checked Exception IOException
- Error 클래스
💡 try ~ catch 구문
- Java는 예외처리를 위하여 try ~ catch 문을 제공함.
- try 블록은 예외가 발생할 수 있는 영역을 감싸고, catch 블록에는 발생한 예외를 처리하는 코드를 작성
- try{} 예외 발생시 => catch ( 예외종류 ){}
- try 영역에서 발생하는 예외가 여러 개인 경우 다수의 catch문 작성가능
- Java7 부터는 다중 예외 처리를 위한 파이프 (|) 제공
- 예외 발생 여부와 상관없이 항상 실행해야 할 코드가 있는 경우 finally 구문 사용
- try 블록은 예외가 발생할 수 있는 영역을 감싸고, catch 블록에는 발생한 예외를 처리하는 코드를 작성
💡 사용자 정의 예외 클래스
- 문법적으로 문제가 되는 상황에서는 JVM이 적절한 예외를 발생시킴. 그러나 논리적으로 문제가 되는 경우에는 상황에 맞는 예외클래스를 직접 작성해야함.
- 예외 클래스 작성 방법
- Exception 클래스를 상속
- 예외클래스의 생성자에 메시지를 추가
- throw 키워드
- 예외가 발생 했음을 JVM에 알리기 위해 사용
- 문법 : throw 예외 클래스의 인스턴스;
- 예외의 전파 throws
- 발생된 예외상황을 메소드를 호출한 곳으로 전달하기 위해 사용
- 예외 클래스 작성 방법
public class NotAvailableAgeException extends Exception {
public NotAvailableAgeException() {
super("유효하지 않은 나이가 입력되었습니다");
}
}
public class AgeInputExample {
public static void main(String[] args) {
System.out.print("나이를 입력하세요 : ");
try {
int age = readAge();
System.out.println("당신의 나이는" + age + "세 입니다.");
} catch (NotAvailableAgeException e) {
System.out.println(e.getMessage());
}
}
private static int readAge() throws NotAvailableAgeException {
Scanner scanner = new Scanner(System.in);
int age = scanner.nextInt();
if (age < 0) {
throw new NotAvailableAgeException();
}
return 0;
}
}
'☕JAVA > 🐣 강의 [JAVA]' 카테고리의 다른 글
[JAVA][기초] Collection 인터페이스 - List / Set 인터페이스 (0) | 2022.11.10 |
---|---|
[JAVA][기초] Java Collection Framework 와 Generic 제네릭의 이해 (0) | 2022.11.10 |
[JAVA][기초] Wrapper 클래스 (0) | 2022.11.09 |
[JAVA][기초] String 클래스 (0) | 2022.11.09 |
[JAVA][기초] 배열 Array (0) | 2022.11.07 |