정상, 예외 흐름 분리
자바의 예외 처리 메커니즘과 try, catch 구조로 정상 흐름은 try 블럭에 모아서 처리, 예외 흐름은 catch 블럭에 모아서 처리
>> 정상 흐름과 예외 흐름을 명확하게 분리해 코드의 가독성 향상
finally
try를 시작하기만 하면 finally 코드 블럭은 어떤 경우라도 반드시 호출됨
>> 주로 try에서 사용한 자원을 해제할 때 주로 사용
try, catch 안에 처리할 수 없는 예외가 발생해도 반드시 호출
>> 정상 흐름과 예외 흐름을 분리해서 코드의 가독성 향상
>> 사용한 자원을 항상 반환할 수 있도록 보장
처리할 수 없는 예외
상대 네트워크 서버에 문제가 발생해 통신이 불가능하거나 데이터베이스 서버에 문제가 발생해 접속이 불가하면
>> 애플리케이션에서 연결 오류, 데이터베이스 접속 실패와 같은 예외 발생
시스템 오류 때문에 발생한 건 예외를 잡아도 해결할 수 있는 것이 거의 없음
>> 고객에게는 오류 메세지, 내부 개발자에게는 오류에 대한 로그
체크 예외의 부담
처리할 수 없는 예외가 많아지고 프로그램이 점점 복잡해짐
실무에서는 수 많은 라이브러리를 사용하고 다양한 외부 시스템과 연동
처리할 수 없는 체크 예외를 모든 클래스에서 계속 밖으로 던져야 하는 지저분한 코드 생성
>> throws Exception이라는 악수
throws Exception의 문제
다른 체크 예외를 체크할 수 있는 기능이 무효화, 중요한 체크 예외를 다 놓침
언체크(런타임) 예외 사용
일일이 throws를 선언하지 않아도 됨
일부 언체크 예외를 잡아서 처리할 수 있으면 잡아서 처리하면 됨
처리할 수 없는 예외들은 공통으로 처리할 수 있는 곳을 만들어 한 곳에서 해결
try-with-resources
try가 끝나면 외부 자원을 반납하는 패턴이 반복되면서 자바에서는 try with resources라는 편의 기능 도입
먼저 AutoCloseable 인터페이스 구현
>> try with resources를 사용할 떄 try가 끝나는 시점에 close()가 자동으로 호출
리소스 누수 방지 : 모든 리소스가 제대로 닫히도록 보장
코드 간결성 및 가독성 향상 : 명시적인 close() 호출이 필요 없음
스코프 범위 한정 : 리소스로 사용되는 client 변수의 스코프가 try 블럭 안으로 한정되어 코드 유지보수가 더 쉬워짐
조금 더 빠른 자원 해제 : 기존엔 catch 이후에 자원을 반납했지만 try with resources는 try 블럭이 끝나면 즉시 close() 호출
'Java' 카테고리의 다른 글
Java / 제네릭(Generic) 2 (0) | 2025.03.04 |
---|---|
Java / 제네릭(Generic) 1 (0) | 2025.03.02 |
Java / 예외 처리 - 이론 (0) | 2025.02.28 |
Java / 지역 클래스, 익명 클래스 (0) | 2025.02.27 |
Java / 중첩 클래스, 내부 클래스 (0) | 2025.02.27 |