Java 의 try-catch-finally는 수업시간에 DAO를 만들 때 많이 사용했었는데 구글링을 하다가 배우지 않았던 try-with-resources라는 것을 발견했다. 조금더 간편해졌다는 글에 귀가 솔깃솔깃 해졌는데 한번 찾아보고 정리해 보았다.
우선 두개 다 Java에서 예외 처리를 위해 사용되는 구문인데 각각의 특징을 먼저 살펴보자면
- try - catch - finally
try - catch - finally 구문은 예외 처리를 위한 전통적인 방식이며, try블록 내에서 예외가 발생할 수 있는 코드를 작성하고, catch블록에서 해당 예외를 처리한다.
finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 코드 블록이다.
try - catch - finally의 장점으로는 예외 처리를 세밀하게 제어할 수 있으며, 예외가 발생할 경우 catch블록에서 적절한 조치를 취할 수 있다. 리소스 해제 등의 정리 작업을 finally 블록에서 수행 할 수 있지만, 단점으로 코드가 복잡해지며 예외 처리 코드와 정상적인 코드가 섞여있어 가독성 저하가 우려되는 구문이다. 리소스 해제와 같은 정리 작업을 잊어버리거나 이로 인해 오류가 발생할 수도 있다.
- try-with-resources 구문은 Java7부터 도입된 자원 관리를 위한 편리한 방식이다.
try 블록 내에서 자원을 선언하고, 해당 자원은 try블록이 종료될 때 자동으로 닫힌다.
이 구문의 장점은 자원의 자동해제를 보장하고 예외 발생 여부와 상관없이 자원이 안전하게 닫힌다. 또한 코드가 간결해지고 가독성이 향상되며 try-with-resources 구문을 사용하면 명시적인 리소스 해제 코드를 작성할 필요가 없다.
다만 자원이 AutoCloseable 인터페이스를 구현해야만 사용할 수 있으며 일부 특정한 상황에서는 이를 만족 시키기 어려울 수 있다.
try-catch-finally의 예제를 살펴보자면
try {
// 예외가 발생할 수 있는 코드
// 예를 들어, 파일에서 데이터를 읽거나 외부 리소스에 접근하는 작업 등
} catch (Exception e) {
// 예외 처리 코드
// 예외가 발생했을 때 실행되는 블록
} finally {
// 정리 작업 또는 리소스 해제 코드
// 예외 발생 여부와 상관없이 항상 실행되는 블록
}
이런 식인데 try블록 내에는 예외가 발생할 수 있는 코드, catch블록은 예외가 발생했을 때 해당 예외를 처리하는 코드를 작성, finally블록은 예외 발생 여부와 상관없이 항상 실행되는 코드 블록으로, 주로 리소스의 해제나 정리작업을 처리하는데 쓴다.
try-with-resources
try (FileReader reader = new FileReader("file.txt")) {
// 자원을 사용하는 코드
// 예를 들어, 파일에서 데이터를 읽는 작업 등
} catch (Exception e) {
// 예외 처리 코드
// 예외가 발생했을 때 실행되는 블록
}
//간결해..!
위의 예제에서 try블록 내에는 자원을 선언하고 초기화하는 코드가 작성된다. 자원은 try-with-resources 구문 내에서 선언되며, 해당 자원은 try블록이 종료될 때 자동으로 닫히게 된다. 이는 자원이 AutoCloseable 인터페이스를 구현하고 있어야 가능하다. catch블록은 예외가 발생했을 때 해당 예외를 처리하는 코드를 작성한다.
'Java' 카테고리의 다른 글
Java Optional Class (0) | 2023.06.26 |
---|---|
JAVA Jstl (0) | 2023.06.19 |
JAVA Cookie (0) | 2023.06.13 |
간단히 보는 JAVA의 자료구조 (0) | 2023.06.13 |
EL (Expression Language) (0) | 2023.06.13 |
댓글