여전히 아래로 스크롤 하시겠습니까? 여기 있습니다!
이 질문은 저에게 한동안 힘든 시간을주었습니다.
try
{
int a=1;
int b=0;
int c=a/b;
}
catch(Exception ex)
{
console.writeline(ex.Message);
}
finally
{
console.writeline("Finally block");
}
console.writeline("After finally");
위의 시나리오에서 무엇이 인쇄됩니까? 네 맞아요 :
이것은 무엇을 인쇄할까요? 아무것도! catch 블록에서 오류가 발생했기 때문에 오류가 발생합니다.
좋은 프로그래밍 구조에서는이 코드가 다른 레이어에서 처리된다는 점에서 예외가 퍼널 링됩니다. 이러한 경우를 자극하기 위해 중첩 된 코드를 사용해 보겠습니다.
try
{
try
{
int a=1;
int b=0;
int c=a/b;
}
catch(Exception ex)
{
throw(ex);
}
finally
{
console.writeline("Finally block")
}
console.writeline("After finally");
}
catch(Exception ex)
{
console.writeline(ex.Message);
}
이 경우 출력은 다음과 같습니다.
- 마지막으로 차단
- 예. 메시지-그것이 무엇이든.
예외를 포착하여 다른 레이어 (Funneling)로 다시 던지면 throw 후 코드가 실행되지 않음이 분명합니다. 함수 내부의 리턴이 작동하는 방식과 유사하게 작동합니다.
이제 catch 블록 이후에 코드에서 리소스를 닫지 않는 이유를 알았습니다.