try ~ catch 란?
try ~ catch 문은 실행할 코드블럭을 표시하고 예외(exception)가 발생(throw)할 경우의 응답을 지정하는 것이다. 사용법은 아래와 같다. try_statements는 실행될 선언들을 의미하고,
catch_statements는 try 블록에서 예외가 발생했을 때 실행될 선언들을 의미한다.
exception_var는 catch 블록과 관련된 예외 객체를 담기 위한 식별자이고
마지막으로 finally_statements는 try 선언이 완료된 이후에 실행된 선언이다.
이 선언들은 예외 발생 여부와 상관없이 실행된다.
try 선언의 형식
try 선언에는
try ~ catch | try ~ finally | try ~ catch ~ finally
이렇게 세 가지 형식이 존재한다.
catch 블록은 try 블록 안에서 예외가 발생하는 경우 무엇을 할지 명시하는 코드를 포함한다. try 블록 (또는 try 블록 내에서 호출된 함수) 내의 명령문이 예외를 throw 하면 제어가 catch 블록으로 이동한다.
그러나 try 블록에 예외가 발생하지 않으면 catch 블록을 건너뛰게 된다.
finally 블록은 try 블록과 catch 블록이 실행을 마친 후 항상 실행된다. 예외가 발생했는지에 관계없이 항상 실행되는 블록이다.
추가로 하나 이상의 try 문을 중첩할 수 있다는 사실도 알아두자.
내부의 try 문에 catch 블록이 없으면, 둘러싼 try 문의 catch 블록이 입력된다.
무조건적 catch문
try 블록 내에서 예외가 발생하면 catch 블록이 실행된다.
예를 들어, 다음 코드에서 예외가 발생하면 제어가 catch 블록으로 전송된다.
조건적 catch문
아래와 같이 try ~ catch 블록을 if ~, else if ~, else 구조와 결합해서
'조건부 catch-blocks'를 만들 수 있다. 이에 대한 일반적인 사용 사례는 예상 오류의 작은 하위 집합 만 포착한 다음 다른 경우에 오류를 다시 발생시키는 것이다.
[정리]
-try ~ catch 문은 실행할 코드블럭을 표시하고,
예외가 발생할 경우의 응답을 지정하는 것이다.
-try 선언에는 try ~ catch | try ~ finally | try ~ catch ~ finally
이렇게 세 가지 형식이 존재한다.
-무조건적 catch문 vs 조건적 catch문