국비지원 공부 정리/Java

JAVA 예외처리

worldstroy 2025. 4. 8. 10:15

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