JAVA에서의 예외 처리란?
예외란 프로그램을 실행하는 도중에 의도치 않은 결과가 나오는 경우를 의미함 |
이러한 예외조건을 처리하고 방지하는 것을 예외 처리하고 한다. |
컴파일 오류
개발 언어의 문법에 맞지 않고 작성된 코드가 있을 때 발생되며, 코드가 실행조차 되지 않음 |
예외가 발생하는 경우
try- catch 문을 통해 컴파일러가 발생한 오류의 유형을 파악하면 그 유형에 따라 에러를 처리하게 됨 |
예외의 종류
예외 클래스 | 발생 원인 | 설명 |
NullPointerException | null 참조 객체에 접근할 때 발생. 예: obj.method()에서 obj가 null일 경우 | null 객체에 접근 시 발생하는 오류 |
ArrayIndexOutOfBoundsException | 배열 인덱스가 범위를 벗어날 때 발생. 예: arr[10]에서 배열 크기가 5일 때 | 배열의 유효하지 않은 인덱스를 접근할 때 발생 |
ArithmeticException | 수학적인 연산 과정에서 발생하는 오류 | 0으로 나누러 할 때 주로 발생함 |
ClassCastException | 잘못된 형변환 시 발생. 예: Object obj = new String("hello"); Integer num = (Integer) obj; |
잘못된 타입 변환 시 발생 |
IllegalArgumentException | 메서드에 잘못된 인자를 전달하면 발생 예) Thread.sleep(-1000); |
잘못된 메서드 인자 값을 전달 |
IllegalStateException | 메서드 호출 시 객체 상대가 잘못되었을 때 발생 | 객체가 잘못된 상태에서 메서드를 호출할 때 발생함 |
NumberFormatException | 문자열을 숫자로 변환할 때 숫자로 변환할 수 없는 형식을 때 발생 예)"abc".parseInt() |
문자열을 숫자로 변환할 때 형식이 맞지 않으면 발 생함 |
IOException | 입출력 작업 중 오류 발생 예) 파일 읽기 쓰기 중 파일이 없거나 권한 문제가 발생하면 발생함 |
파일 네트워크 스트림 등 입출력 처리 중 발생한 오류 |
FileNotFoundException | 지정된 파일을 찾을 수 없을 때 발생 예) FileReader 객체로 파일의 내용을 읽어 오려 할 때 지정된 파일을 찾을 수 없다면 발생됨 |
파일을 찾을 수 없을 때 발생함 |
SQLException | 데이터베이스 작업 도중 오류 발생 예) 쿼리 실행 중 문법 오류, 연결 실패 |
데이터베이스 연동 시 발생하는 오류들 |
TimeoutException | 작업이 지정된 시간 내에 완료되지 않았을 때 발생 예) Tread.sleep(1000); 후 작업이 완료되지 않음 |
시간 초과로 인한 작업 실패 |
ConcurrentModificationException | 컬렉션을 순회하는 동안 다른 작업에서 그 내용을 수정하려고 시도할 때 발생 예) List를 for 문이나 이터레이터를 이용해 순회하며 remove를 호출하는 경우 |
컬렉션을 순회하면서 동시에 수정하려하면 발생 |
UnsupportedOperationException | 현재 객체가 지원하지 않은 작업을 시도하려 할 때 발생함 읽기 전용으로 설정된 리스트에서 추가하는 함수를 호출하려고 시도 |
해당 작업을 지원하지 않을 때 발생 |
NoSuchElementException | 컬렉션에서 요소를 찾을 수 없을 때 발생 Iterator에서 next 호출 시 더 이상의 요소가 존재하지 않을 때 발생 |
컬렉션에서 더 이상 요소가 없을 때 발생 |
ConnectionException | 네트워크 연결 중 오류 발생 예) 서버와 연결이 끊어진 경우 |
네트워크나 서버 연결 중 발생하는 오류 |
MalformedURLException | 잘못된 URL 형식이로 URL을 파싱할 때 발생 |
URL 형식이 잘못되었을 때 발생 |
ClassNotFoundException | 클래스를 로드할 수 없을 때 발생 Class.forName("com.examp.Myclass")에서 클래스가 ㅇ벗을 경우 |
지정된 클래스를 프로그램 내에서 찾을 수 없는 경우 발생 |
IndexOutOfBoundsException | 인덱스가 유효하지 않을 때 발생 예) 5개의 정보만 가지는 List에서 6번 이상의 index를 호출하려 시도했을때 |
리스트 배열 등에서 유효하지 않은 인덱스에 접근하려 할 때 발생 |
SocketException | 소켓 연결 오류 발생 |
네트워크 통신 중 발생하는 예외 |
사용자 정의형 처리 사례
// 사용자 정의 예외 클래스 (RuntimeException 상속)
public class InvalidUserInputException extends RuntimeException {
// 생성자
public InvalidUserInputException(String message) {
super(message); // 부모 클래스의 생성자 호출
}
}
public class Example {
public static void main(String[] args) {
// 예외 발생
throw new InvalidUserInputException("잘못된 사용자 입력입니다.");
}
}
RuntimeException 계열: | 주로 프로그래밍 오류나 잘못된 입력에 의해 발생하는 예외입니다. 예를 들어, 배열의 인덱스를 잘못 접근하거나 null 객체를 참조할 때 발생합니다. 이러한 예외들은 컴파일 타임에 처리되지 않으며 런타임에만 발생합니다. |
IOException 계열 |
입출력 작업과 관련된 예외로, 파일 시스템이나 네트워크, 데이터베이스와의 연결에서 발생할 수 있습니다. |
SQLException 계열 | 데이터베이스 관련 오류가 발생할 때 발생합니다. 데이터베이스 연결 문제나 쿼리 오류가 대표적인 원인입니다 |
'국비지원 공부 정리 > Java' 카테고리의 다른 글
추상 클래스와 인터페이스 (0) | 2025.04.08 |
---|---|
객체지향 프로그래밍과 객체 (0) | 2025.04.08 |
자바의 반복문 (0) | 2025.04.05 |
Arrays 클래스와 ArrayList (0) | 2025.04.05 |
JAVA에서의 변수명 (0) | 2025.04.04 |