당연하지만 헷갈리는 __try 문 호출 순서
__try __finally 내부의
__try __except 는 쉽게 예상가능하듯 다음과 같은 실행 순서를 갖는다.
__try{ __try{ ③ } |
__try 문 내의 또다른 __try 문에서 Exception 이 발생하면,
Exception 핸들러가 먼저 호출될까 __finally 구문이 먼저 호출될까?
헷갈릴 수 있지만, __finally 가 먼저 호출된다.
__try{ __try{ // 실행되지 않는 라인 |
__try 문 안에서 return 을 하면,
return 에 대한 처리 순서는 다음과 같다.
void fnA()
} |
만약, 동기화객체를 사용하는 함수에서,
동기화를 풀기위해 __finally 구문을 사용하고,
내부에서 (동일한 동기화객체를 사용하는) 다른 함수를 호출하며 리턴한다면
Lock 에 의한 문제가 발생할 수 있으므로 주의해야 한다.