JAVA - 예외 처리

Mkim4·2023년 12월 28일

예외와 예외 클래스

하드웨어적인 고장으로 인해서 응용 프로그램 실행에 오류가 나면 이를 에러라고 부름
자바는 이런 에러 외에 모든 발생상황을 Exception 이라고 부름
예외를 처리하는 Throwable 클래스이고 구현클래스가 아니라 abstract 클래스이다.

코딩으로 인해 논리적 에러가 발생하면 Exception.
실행시에 발생하는 이외의 예외(하드웨어적 에러)를 Error.

왜 예외처리를 하는가?

-> 예외 발생 시 프로그램의 갑작스러운 종료를 막고 정상 실행을 유지할 수 있게 처리하는 코드
프로그램이 정상적으로 종료가 되도록, 어떠한 문제점이 있는지 테스트해보는 용도.
계속적인 실행상태를 유지할 수 있다. 문제가 발생하여도 원인을 기록으로 남기고 다른 프로그램을 돌릴 수 있도록 하기 위해

일반 예외 (Check Exception)

컴파일러가 잡아내는 에러, 체크 예외는 컴파일 하기 전에 반드시 throws 든 try-catch든 예외처리를 해줘야 실행이 가능한 예외이다. 반드시 해줘야된다. 그렇지 않으면 컴파일러가 클래스를 만들어주지 않는다.

실행 예외 (Uncheck Exception)

컴파일러가 검사하지 않은 모든 에러는 실행 예외
그 이외의 실행 에러는 개발자가 처리해야할 몫이다.
RuntimeException 하위 예외들은 언체크 예외이므로, 필요하면 throws 나 try-catch로 잡아준다. 일어날 가능성이 높은 예외들을 잡아주면 프로그램의 안정성이 높아진다.

예외 처리 코드 방법 3가지

예외를 처리해주는 방식 3가지
1. e.getMessage() : 에러의 원인을 간단하게 출력
2. e.toString() : 어느 예외가 발생했는지까지 알려줌, Exception의 내용과 원인 출력
3. e.printStackTrace() : 에러의 발생 근원지를 찾아 단계별로 에러를 출력
예외가 발생해도 종료되지 않도록 try-catch로 예외처리함

throws 의미

throws 예외 처리 미루기 : 메서드를 호출한 위치에서 예외를 처리하라!

자바가 왜 좋다고 생각하세요?

자바는 개발자가 필요로하는 불필요한 작업들을 최소한으로 줄일 수 있게끔 표준 라이브러리에서 제공하고 있다.

예외 종류에 따른 처리

try catch-finally 블록은 생성자 내부와 메소드 내부에서 작성
꼭 해줘야하는 것은 finally에서 마무리 해줘야함.
예외의 처리위치는 method 에서 처리해준다.

리소스 자동 닫기

try-with-resources 블록을 사용하면 예외 발생 여부와 상관없이 리소스를 자동으로 닫아줌

예외 떠넘기기

사용자 정의 예외

profile
귀요미 개발자

0개의 댓글