Java - 예외처리

zhyun·2020년 10월 17일
0

자바 기타

목록 보기
1/1

참고

Exception_01.java
Exception_02.java
Exception_03.java

프로그램 오류

  • 프로그램이 실행 중에 어떤 이유로 인해 오작동을 하거나 비정상적으로 종료되는 경우

컴파일오류 VS 런타임오류

컴파일 오류

  • Ctrl+S 저장시 컴파일 중에 발생하는 오류

런타임 오류

  • Ctrl+F11 프로그램 실행 중에 발생하는 오류

에러 vs 예외

에러 (Error)

  • 프로그램 코드를 이용하여 수습될 수 없는 심각한 오류
  • 게임 오픈때 사람 몰려서 서버 터질때, 대기열 방식 이용해서 입장인원 제한

예외 (Exeption)

  • 프로그램 코드를 이용하여 수습될 수 있는 미약한 오류

Checked예외 vs Unchecked예외

Unchecked 예외

  • 컴파일러가 예외처리를 강제하지 않는 경우
    • RuntimeException과 그 자손들의 경우에는 예외처리를 강제하지 않음
    • Error(어짜피 못고치니까)

Exception

  • 모든 예외의 최고 조상은 Exception

RuntimeExeption

  • 주로 프로그래머의 실수에 의해서 발생하는 예외
  • IndexOutOfBoundsException : 배열에서 방번호 넘어갈때, 배열에서 2번방까지밖에 없는데 3번방 달라고 할때
  • NullPointException : 객체 생성이 안됐는데 그 멤버들을 호출하려고 했을때
    • 객체 생성 전(주소 없을 때)에 인스턴스 멤버에 접근하려고 할 때

그외 Exception

  • 주로 외부의 영향에 의해서 발생하는 예외
  • ClassNotFoundException : 클래스 못찾음, 가끔 시스템 오류로 컴파일 되지 않는 경우가 있음
  • FileNotFoundException : 파일은 넣어놨는데 시스템 오류로 못찾을때
Exception e1 = new Exception("예외처리");

try{
    throw e1;
}catch (Exception e{
    System.out.println("예외 발생시키기 성공");
    System.out.println(e.getMessage()); //이유만
    e.printStackTrace();// 실제 예외 발생시, 위치+이유 출력
}

try-catch

  • 프로그램 실행시 발생할 수 있는 예외에 대비한 코드를 작성한 것

사용방식

try{
    //예외가 발생할 수 있는 코드
}catch(Exception e){ //예외종류
    // 수행한 코드에서 Exception 이라는 예외가 발생했을 때 처리할 문장
}catch(Exception e2){ //예외종류
    // 수행한 코드에서 Exception 이라는 예외가 발생했을 때 처리할 문장
}
  • 발생한 종류의 예외와 일치하는 하나의 catch만 수행된다
  • 예외가 2개다 발생하면 첫 번째 문장만 수행

예외발생시키기 throw

  • 연산자 new를 이용하여 발생시키고자 하는 예외의 객체를 만든다.
  • 예약어 throw를 이용하여 예외를 발생시킨다.

예외던지기 throws

  • 메서드에 예외 선언하기
    • 메서드의 선언부 마지막에 예약어 throws와 함께 예외 종류를 적어주기만 하면 된다.
    • 예외 처리는 해당 메서드를 호출한 쪽에서 예외 처리

finally 블럭

  • try-catch 블럭에 상관없이 수행되어야 할 코드를 포함한다.

사용형식

try{
    //예외가 발생할 수 있는 코드
}catch(Exception e){
    //수행한 코드에서 Exception 이라는 예외가 발생했을 때 처리할 문장
}catch(Exception e){
    //수행한 코드에서 Exception 이라는 예외가 발생했을 때 처리할 문장
}finally{
    //예외발생에 상관없이 수행되어야 할 코드
}
profile
HI :)

0개의 댓글