try/catch 구문에서 finally의 요점이 뭘까요?
stackoverflow지난 몇년간 여러 프로그래밍 언어를 사용하면서 try-catch/except-finally
구문을 오래 사용해 왔습니다.
누군가 오늘 저에게 finally
의 존재의의에 대해서 질문하였고, 저는 그것에 대해 대답할 수 없었습니다.
질문은 이렇습니다: try-catch
구문 이후에 코드를 작성하면 되는것을 굳이 finally
를 사용할 필요가 있을까요?
혹은, 다음 코드에서 어떤 차이점이 있는지 말씀해 주실 수 있을까요?
try{ /* a */ }
catch { /* b */ }
finally { /* c */ }
try{ /* a */ }
catch{ /* b */ }
/* c */
finally
구문은 다음과 같은 3가지 상황 에서 catch
구문으로는 깔끔하게 처리하지 못하는 상황에서 빛을 발합니다:
- 만약
try
안에 있는 코드에서return
을 할 경우. catch
블록 안에서 잡아낸 예외를 다시 던지는 경우, 혹은 고의 혹은 실수로 새로운 예외를 던질 경우.- 만약
catch
구문에서 잡아낼 수 없는 예외가try
블록에서 발생 하였을 때.
물론 finally 구문의 코드를 각각의 return
, throw
이전에 붙여넣고 catch
블록을 새로운 try/catch
로 감싸서 새로운 예외가 던져질 가능성을 배제할 수 있겠지만, finally
구문을 사용하여 처리하는것이 가장 쉽고 깔끔한 방법입니다.
'stackoverflow' 카테고리의 다른 글
2>&-, 2>/dev/null, |&, &>/dev/null and >/dev/null 2>&1 의 차이점에 대해서 (0) | 2020.05.28 |
---|---|
실행 vs 읽기 비트, 리눅스폴더에서는 어떻게 동작하나요? (0) | 2020.03.28 |
XY problem이란? (0) | 2020.03.26 |
bash에서 exec와 eval의 차이는 무엇일까? (0) | 2020.01.23 |