Java_예외처리

song·2023년 10월 19일

Java

목록 보기
25/36

예외처리

  • 프로그램 오류에는 3종류가 있다.
    1. 컴파일 에러 (빨간줄 뜨는 거)
      • 컴파일 시 발생하는 에러 (주로 문법적으로 잘 못 됐을 때)
    2. 런타임 에러
      • 컴파일이 끝나고 실행하려고 하는 순간에 발생하는 에러
    3. 논리적 에러
      • 컴파일도 잘 끝나고 실행(run)도 다 됨. 다만 결과가 만든 사람(개발자)의 예상과 다르게 나옴.

예외처리 하는 이유

  • 에러나면 프로그램이 바로 종료된다. 그런데 예외처리를 해주면 비정상적인 종료는 막을 수 있다.

대표적인 예외 종류(에러 아니고 예외)

  1. 사용자 실수나 외적인 요인때문에 발생 (개발자 잘못은 아님)
    ex) 휴대폰번호에 '-'를 넣지 말라고 했는데도 넣어서 오류남.
    • Exception - 모든 예외의 최고 조상 (객체로 따지면 Object)
    • IOException - 인풋, 아웃풋 관련 예외
    • ClassNotFoundException - 클래스가 존재하지 않는 경우
  2. 개발자가 코드 잘 못 짠 것 관련
    • RuntimeException - 개발자 실수로 발생
    • ClassCastException - 형변환 잘못한 경우
    • NullPointerException - null인 값에 length 값 구할 때
    • IndexOutOfBounceException - 배열 범위 벗어남
  • Exception이 최상위 예외이기 때문에 try catch할 때 Exception을 제일 먼저 catch하게되면 밑에 catch하는 예외에는 빨간줄이 뜬다. (예외를 위에서 다 잡아서 잡을 것이 없기 때문)

예외 처리 방법

  1. try catch
    try catch finally
    try{
       일반 코드
    }catch(예외 종류){
       예외가 났으면 이리로
    }catch(예외 종류){
       예외가 났으면 이리로
    }finally{
       try나 catch 둘 중 어디에 걸리든 걔네 실행 이후 무조건 실행하는 코드
    }
  2. throws
    • throws를 이용해서 try catch 대신 메서드 선언부에서 에외를 선언해 놓을 수 있다.
    • 예외 던지기라고 한다.
    • 해당 메서드에서 예외처리를하지 않고, 자기를 사용한(호출한) 곳에서 예외 처리를 하도록 던진다
    • try catch처럼 예외를 처리해주는 것이 아니라 떠넘기기 때문에 시스템이 끝나기 전에는 try catch든 다른 방식으로 처리해주는게 좋다.
  • 예외를 처리해 주는 건 try catch이고
    throws로 하는 건 그냥 예외를 미리 선언해서 넘길 준비만 하는 것이다.
    (쉽게 말하면 '이런거 예외 터질거니까'일단 넘어가라고 하는 것과 마찬가지이다. )
profile
계속 나아가기

0개의 댓글