예외 처리(Exception Handing)

김덕근·2022년 12월 27일
0

concept

목록 보기
14/21

error / exception

컴파일 에러 : 프로그램의 실행을 막는 소스 코드상의 문법 에러
런타임 에러 : 프로그램 실행 중 발생하는 에러
시스템 에러 : 컴퓨터 오작동으로 인한 에러, 소스 코드 수정으로 해결 불가(버그, 연산지연)


Checked Exception : 확인을 꼭 해야만하는 예외

IOException -


Unchecked Exception : 확인을 굳이 안해도 되는 예외 : 선택적으로 예외처리

RuntimeException 후손 클래스
Unchecked Exception으로 주로 프로그래머의 부주의로 인한 오류인 경우가 많기 때문에
예외 처리보다는 코드를 수정해야 하는 경우가 많음

  1. ArrayIndexOutOfBoundsException : 배열 범위 초과 예외
    배열의 index범위를 넘어서 참조하는 경우
    배열명.length를 사용하여 배열의 범위 확인
  1. NegativeArraySizeException : 배열이 음수의 크기일때 발생 예외
    배열 크기를 음수로 지정한 경우 발생
    배열 크기를 0보다 크게 지정해야 함

  2. NullPointerException :
    Null인 참조 변수로 객체 멤버 참조 시도 시 발생
    객체 사용 전에 참조 변수가 null인지 확인

  3. ArithmeticException : 산술적 예외
    /by zero ==> 0으로 나눌 수 없습니다
    0으로 나누는 경우 발생
    if문으로 나누는 수가 0인지 검사

  4. InputMismatchException :
    Scanner를 사용하여 데이터 입력 시
    입력 받는 자료형이 불일치할 경우 발생

  5. ClassCastException : 업캐스팅 / 다운캐스팅 오류
    Cast연산자 사용 시 타입 오류
    instanceof 연산자로 객체타입 확인 후 cast연산


try~catch문
try : 예외가 발생할 것 같은 코드 수행을 시도하다
-> 수행 중 예외 발생시, 예외 객체가 던져짐(throw)

catch(던진것을 받다) : try에서 던져진 예외를 잡아서 처리 -> 예외를 잡아 처리했기 때문에 프로그램이 종료되지 않음 (Exception간의 상속 관계 고려해야 함)

finally : Exception 발생 여부와 관계없이 꼭 처리해야 하는 로직 기술


오버라이딩 : 상속받은 메서드를 자식이 재정의
성립조건

  • 메서드명, 매개변수, 반환형 동일
  • 접근제한자 같거나 더 넓은 범위
  • 예외의 범위는 같거나 더 좁게

메소드 선언 시 throws Exception명을 추가하여 호출한 상위 메소드에게 처리 위임

Exception 발생하는 곳에서 throw new 예외클래스명()으로 발생

ex)

public void method() throws IOException {
		
		// IOException 예외 강제 발생
		throw new IOException();
	
		// 발생한 예외처리 하는 방법
		// 1) try - catch로 감싸서 현재 위치에서 처리
		// 2) throws로 호출한 메서드로 예외를 위임하여 처리
	
	}
profile
안녕하세요!

0개의 댓글