예외
ㅡ 프로그램 실행 중 발생한 오류중에서 처리가 가능한 오류
에러 | 개발자가 조치를 취할 수 없는 수준 ( 메모리 부족, JVM 문제 ) |
컴파일 에러 | 컴파일 시 발생하는 에러 (오타, 잘못된 자료형) |
런타임 에러 | 프로그램 실행 중 발생하는 에러 |
로직 에러 | 실행은 되나 생각한 것관 다르게 작동하는 에러 |
예외 | 다른 방식으러 처리 가능한 오류 ( 입력 값 오류, 네트워크 문제 ) |
예외 처리
ㅡ 예외 발생 시 미리 대처하는 코드를 작성하여 프로그램이 비정상적으로 종료되는 것을 막음
try-catch-finally
try catch : 예외를 처리하기 위한 구문
try문에는 예외가 발생할 수 있는 코드를 작성 / catch문에는 예외가 발생할 경우 처리할 방법을 작성
finally : try catch문에 선택적으로 추가 / 예외 발생에 상관없이 무조건 실행되는 코드 구문 / 외부와의 연결 종료에 주로 사용
try {
// 예외가 발생할 수 있는 로직
int result = 10 / 0;
System.out.println(result);
} catch (Exception e) {
// try 구문에서 예외가 발생했을 때 실행하는 로직
System.out.println("0으로 나눌 수 없음");
} finally {
System.out.println("종료합니다"); // 무조건 실행
}
catch문에선 발생할 예외의 종류를 설정할 수 있으며 Exception 클래스가 대부분의 예외를 포함하고 있는 상위 클래스라고 한다.
throw
ㅡ throw를 이용하여 고의로 예외 발생 가능
public class Test {
public static void main(String[] args) {
try {
Exception e = new Exception("고의 예외");
throw e; // 에러 발생
} catch(Exception e) {
System.out.println("예외 발생");
System.out.println(e.getMessage());
}
}
}
throws
ㅡ 예외 발생 시 현재 메서드가 예외를 처리하지 않고 호출한 쪽으로 예외 처리 책임을 전가한다.
public class Test {
static void printArray(int index) throws Exception { // 예외 처리를 호출하는 곳에 짬때림
int[] array = new int[] { 1, 2, 3 };
System.out.println(array[index]);
System.out.println("인덱스 범위 벗어남");
}
public static void main(String[] args) {
try {
printArray(5);
} catch (Exception e) {
System.out.println("인덱스 범위 밖입니다.");
}
}
}
'Java' 카테고리의 다른 글
ArrayList (0) | 2023.01.12 |
---|---|
컬렉션 프레임워크 ( Collection Framework ) / 제네릭 ( Generic ) (0) | 2023.01.12 |
추상 클래스 ( Abstract Class ) / 인터페이스 ( Interface ) (0) | 2023.01.10 |
다형성 ( Polymorphism ) (0) | 2023.01.10 |
HashMap (0) | 2023.01.10 |
댓글