Java 개념

예외처리

ron_nie 2023. 8. 1. 20:08
728x90

1. 예외처리

1-1. 컴파일 오류

  • 문법에 맞지 않게 작성된 코드
  • 컴파일할 때 발견

1-2. 예외

  • 오동작이나 결과에 악영향을 미칠 수 있는 실행 중 발생한 오류
    • 정수를 0으로 나누느 경우
    • 배열보다 큰 인덱스로 배열의 원소를 접근하는 경우
    • 존재하지 않는 파일을 읽으려고 하는 경우
    • 정수 입력을 기다리는 코드가 실행되고 있을 때 문자가 입력된 경우
  • Checked Exception
    • 반드시 명시적인 예외처리를 해야하는 예외
    • 컴파일 시점에서 예외처리 체크

1-3. 자주 사용되는 예외

  • NullPointerException : 널 객체를 참조했을 경우
  • ArithmeticException : 정수를 0으로 나누었을 경우
  • ClassCastException : 적절치 못하게 Class를 형 변환하는 경우
  • IllialArgumentException : 메서드에 잘못도니 인자를 전달하는 경우
  • ArrayStoreException : 배열의 타입에 맞지 않는 값을 저장하려는 경우
  • ArrayIndexOutOfBoundsException : 배열을 참조하는 인덱스가 잘못된 경우

1-4. try - catch - finally

  • 예외가 발생할 때 프로그램이 중단되지 않고 예외를 제거
    • try : 예외발생을 인지할 영역
    • catch : try에서 해당 예외 타입이 발생했을 때 실행 영역
    • finally : 예외발생 유무와 상관 없이 실행될 영역
  • 예외타입은 슈퍼클래스로 사용 가능
    • RuntimeException
    • Exception

그냥 Exception으로 적어도 괜찮지만 정확하게 명시해주는 것이 좋다

try {
	String menu = null;
    menu.substring(0,3);
    System.out.println("메뉴가 입력되었습니다");
}catch(NullPointerException e){
	System.out.print("메뉴가 입력되지 않았습니다");
}finally{
	System.out.println("어서오세요")
}

1-5. throw, throws

  • 예외 인스턴스를 만들어 예외를 발생시킴(일부러 발생시킴)
  • Exception 타입으로 발생시킬시 컴파일 단계에서 예외가 처리되어야함
  • 메소드에서 발생할 수 잇는 예외를 명시함
  • Exception 타입 또는 이를 상속한 예외가 발생하면 반드시 throws를 사용하여 명시
class ExceptionSet{
	public ExceptionSet(){}
    
    void runThrows() throws Exception{
		throw new Exception;
	}
    
    void runThrow(){
		throw new RuntimeException;
    }
}

 

반응형