통화 스택에서 예외 처리 스택 프레임 순서
-
07-07-2019 - |
문제
예외 처리 스택 프레임이 C#의 통화 스택에 푸시되는 순서는 무엇입니까? 메소드가있는 경우 :
private void MyMethod() {
try {
DoSomething();
}
catch (Exception ex)
{
//Handle
}
}
각 예외 핸들러에 대해 별도의 스택 프레임이 다음과 같이 생성됩니까?
DoSomething stackframe<br/>
Exception stackframe<br/>
MyMethod stackframe<br/>
또는
DoSomething stackframe<br />
MyMethod stackframe<br />
Exception stackframe<br />
또는
다른 것?
해결책
아니요, 예외 핸들러를 추가해도 콜 스택에 새 프레임이 추가되지 않습니다. 예외가 발생하면 호출 스택의 각 레벨에서 프레임 워크가 해당 예외에 대한 적절한 핸들러를 찾을 수 있도록 적절한 정보를 추가합니다 (실제로 거기에있는 경우. ~이다 적절한 핸들러).
GC는 모든 실행 시점에서 GC가 여전히 GC 루트로 계산되어야 할 로컬 변수를 해결할 수있는 가비지 컬렉션과 비슷합니다. 본질적으로 실행 가능한 코드 자체보다 메소드에 더 많은 것이 있습니다 :)
제휴하지 않습니다 StackOverflow