[자바의정석]Java 예외처리 - #007

박정현·2022년 1월 12일
0

Java

목록 보기
7/16
post-thumbnail

프로그램 오류

컴파일 에러 : 컴파일 할 때 발생하는 에러

  • 자바 컴파일러 :
  1. 구문체크
  2. 번역
  3. 최적화 (간단한 계산은 컴파일러가 계산함)
  4. 생략된 코드 추가

  • 런타임 에러 : 실할 할 때 발생하는 에러
  • 매개변수가 없는 상태에서 실행함
  • 실행되기는 하는데 바로 종료됨

논리적 에러 : 작성 의도와 다르게 동작

  • 프로그램 종료 x 하지만 원하는 것과 다르게 동작

Java의 런타임 에러

  • 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
  • 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 미약한 오류

예외처리

예외처리의 정의와 목적

  • 정의 : 프로그램 실행시 발생하는 예외의 발생에 대비한 코드를 작성
  • 목적: 프로그램의 비정상 종료를 막고 , 실행상태를 유지하는것

Exception 과 RuntimeException

  • Exception 클래스들 : 사용자의 실수와 같은 외적인 요인으로 발생
  • RuntimneException 클래스들 : 프로그래머의 실수로 발생

예외처리(exeption handling)하기 try-catch문

  • 정의 : 프로그램 실행시 발생할 수 있는 예외의 발생에 대비한 코드를 작성
  • 목적 : 프로그램의 비정상 종료를 막아준다

finally블럭

  • 예외 발생여부와 관계없이 수행되어야 하는 코드를 넣는다
  • try 에서 문제가 발생하면 그이후 코드는 사라져서 catch에 또 넣어줘야하지만
    finally를 사용하면 코드 중복을 없애준다

printStackTrace() 와 getMessage()

  • printStackTrace() 예외발생 당시 호출스택에 있던 메서드의 정보와 예외 메시지를 화면에 출력한다.
  • getMessage() 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다

예외 발생시키기
1. 연산자 new 를 이용해서 발생시키려는 예외클래스의 객체를 만든 다음
-Exception e = new Exception("고의로 발생");
2. 키워드 throw 를 이용해서 예외를 발생 시킨다.
-thorw e;

checked예외, unchecked예외

  • checked : 컴파일러가 예외 처리 여부를 체크(예외 처리 필수!)
    ,Exception 자손들 필수(try-catch 필수)
  • unchecked : 컴파일러가 예외 처리 여부를 체크 안함(예외 처리 선택!)
    ,RuntimeException 자손들 선택(try-catch 선택)

메서드 예외처리

예외를 처리하는 방법

  • 메소드 예외처리는 필수 예외처리만 적어주는게 정석이다
  • try-catch문(직접처리),예외 선언하기(떠넘기기),비어있는 catch블럭사용(은폐)
  • 떠넘기던가 , 처리를하던가 결국 마지막엔 처리를 해줘야된다.

사용자 정의 예외

사용자 정의 예외

  • 우리가 직접 예외 클래스를 정의할 수 있다
  • 조상은 Exception과 RuntimeException중에서 선택한다

예외 되던지기

  • 예외를 처리한 후에 다시 예외를 발생시키는 것
  • 호출한 메서드와 호출된 메서드 양쪽 모두에서 예외 처리하는 것
    (1번메소드,2번메소드 각각 부분부분 처리해준다)

연결된 예외

연결된 예외

  • 한 예외가 다른 예외를 발생시킬 수 있다.
  • 예외A가 예외 B를 발생시키면 A는 B의 원인 예외.
  • 발생한 예외를 다른 예외를 생성해서 그안에 포함시킨다

연결된 예외 사용하는 이유
1.여러 예외를 하나로 묶어서 다루기 위해서

  • 예외처리가 간단해지고 세부적으로 확인할수있다

2.checked예외를 unchecked 예외로 변경하려 할 때

profile
빠샤

0개의 댓글

관련 채용 정보