본문 바로가기
프로그래밍/Java

예외 처리, 오류 처리

by 3.14pie 2023. 5. 13.

try-catch-finally - catch 문은 여러개 가능, finally는 생략 가능, 부모 예외 클래스보다 자식 클래스가 먼저 나올 수 없음

try {

}

catch{

}

catch{

}

finally{ //예외 발생 여부와 상관없이 항상 실행되는 코드

}

 

Exception 클래스 - 최상위 클래스로 모든 예외를 잡음

 

printStackTrace() - 현재 발생한 예외의 호출 스택을 보여줌

 

getMessage() - 예외가 왜 발생했는지에 대한 내용, 메시지가 없을 때는 null 반환

 

rethrow - 예외가 발생했을 때 상위로 예외 처리를 넘기는 방식, 호출 스택이 없어질 수 있기 때문에 주의

 

checked 예외 - Java에만 존재, Exception 상속, IOException, SQLException, TimeoutException..., 컴파일러가 예외 처리 하는지 확인함, 어느 메서드가 어떤 예외를 처리하는지 확인 가능, 예외가 발생하는 코드에서 발생한 예외를 그 메서드 안에서 처리하지 않거나(catch) 처리를 하지 않을 경우에 그 사실을 메서드 시그니처 옆에 표시하지 않으면 컴파일 오류(메서드 선언 throws 예외 클래스 이름)

 

unchecked 예외 - C# 예외와 동일, RuntimeException 상속, 컴파일러가 따로 검사 X

 

제어 흐름용으로 예외 사용 금지, goto와 같아짐

 

오류 상황 - 예측이 가능한 상황을 의미

 

오류 상황을 처리하는 4가지 방법 (수정 > 종료 > 예외 > 무시)

 - 무시하고 넘어감 (무시) : 곧바로 크래시, 언젠가 크래시, 불안정한 상태로 동작

 - 문제를 일으킬 수 있는 상황이 있는지 검사하고, 프로그램 종료 (종료) : 어떤 문제가 있는지 보여주고 종료, 팝업, 로그 파일

 - 문제를 일으킬 수 있는 상황이 있는지 검사하고, 실수를 고친 뒤 계속 프로그램 실행 (수정)

 - 문제가 발생하면 예외 적용 (예외)

 

예외는 OO의 일부가 아님(생성자가 없을 때는 알기 힘듬), 잘못된 예외처리보다 크래시가 나음(크래시 해결법 - 자동 세이브, 덤프 확인 가능), 프로그램 종료도 좋은 방법(이상 상태가 되는 것 방지)

'프로그래밍 > Java' 카테고리의 다른 글

SOLID 설계, 그 외 소수설  (0) 2023.05.16
디자인 패턴  (0) 2023.05.11
다형성  (0) 2023.02.02
상속, 컴포지션  (0) 2023.01.29
상속  (0) 2023.01.17