문제

예외 처리 스택 프레임이 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 루트로 계산되어야 할 로컬 변수를 해결할 수있는 가비지 컬렉션과 비슷합니다. 본질적으로 실행 가능한 코드 자체보다 메소드에 더 많은 것이 있습니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top