Java_note07

채승현·2025년 4월 9일

예외처리

1. 오류(Error)

  • 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 오류라고 한다.
    2. 예외(Exception)
  • 1번의 오류 외에 프로그램 자체에서 발생하는 오류
  • 프로그램 코드에 의해 수습될 수 있는 다소 미약한 오류
  • 일반 예외(Checked Exception)
    • 예외 처리가 필수
    • 컴파일 과정에서 예외처리 코드가 있는지 검사
  • 실행 예외(Runtime Exception)
    • 예외처리 코드가 있는지 검사하지 않는다.
    • 컴파일에는 문제가 없지만 실행 시 예외 발생하면 프로그램이 종료된다.

3. 실행 예외

  • NullPointerException
    : null값을 갖는 참조변수로 객체 접근 시 발생
String str = null; System.out.println(data.toString());
  • ArrayIndexOutOfBoundsException
    : 배열에서 인덱스 범위를 초과했을 경우 발생
int[] array ={1,2};
System.out.println(array[2]);
  • NumberFormatException
    : 문자열을 숫자로 변환할 때 변환할 수 없는 문자가 포함 시 발생
String str = "a123";
int value = Integer.parsInt(str);
  • ClassCastException
    : 관계가 없는 클래스로 타입 변환 시도 시 발생
//Animal 클래스는 Dog와 Cat의 부모클래스
Animal animal = new Dog();
Dog dog = (dog) animal;  // 문제 없음
Cat cat = (cat) animal;  // 예외 발생

4. 예외처리

  • 예외처리 코드
    try{
    	//예외 발생 가능성이 있는 문장
    }catch(예외클래스 e){
         //예외 처리
    } finally {
       //항상 실행 ;
   }
  • 다중 catch
    • 코드 실행 시 위부터 순차적으로 실행되기 때문에 상위 예외 클래스가 하위 예외 클래스보다 아래에 위치해야 한다.
    • catch 블록이 여러개여도 하나의 catch 블록만 실행된다.(한 개의 예외 발생 시 즉시 실행을 멈추고 해당 catch 블록으로 이동하기 때문)
    try{
    	//예외 발생 가능성이 있는 문장
    }catch(NullPointerException e){
         //예외 처리
    } catch(Exception e){
         //예외 처리
    }
    //NullPointerException < Exception
    
//=======================================
    try{
    	//예외 발생 가능성이 있는 문장
    }catch(NullPointerException | NumberFormatException e){
         //이런 식으로 or를 통해 같이 적을 수도 있다.
    }
  • 예외 떠넘기기
    • 메소드를 호출한 곳으로 예외를 떠넘긴다.
    • 리턴타입 메소드이름(매개변수, ...) throws 예외클래스1, 예외클래스2, ...{ }
public class ThrowsExam {
	public static void main(String[] args) {
		try {
			findClass();
		} catch (ClassNotFoundException e) {
			System.out.println("클래스가 존재하지 않음");
		}
	}

	public static void findClass() throws ClassNotFoundException {
		Class c = Class.forName("java.lang.String2");  
//예외를 메소드 호출부인 findClass()로 떠넘기기
	}
 }
  • 예외 발생시키기

    • throw new XXXException();
    • throw new XXXException("메세지");
      : 예외 발생 이유를 넣어주기
  • 예외정보 얻기

    • getMessage(): 예외를 발생시킬 때 생성자 매개값으로 사용한 메시지를 리턴한다.
    • printStackTrace(): 예외발생 코드를 추적한 내용을 모두 콘솔에 출력한다. 개발시 사용하고 끝나면 주석처리 or 제거해야 한다.(보안상 좋지 않음)
profile
예비 개발자..(원해요)

0개의 댓글