2012-04-17 3 views
3

는이 코드어떤 Asp.net 예외가 무엇을 할 수 있습니까?

protected void Page_Load(object sender, EventArgs e) 
    { 
     Page_Load(sender, e); 
    } 

나는 오류 (무한 재귀)를 얻을 작성하는 경우 :

enter image description here

을하고 w3wp.exe 과정은 task manager에서 종료됩니다. 파인

...

내가 할하지만 경우 :

그냥 일반 예외 페이지에 나타납니다
throw new ApplicationException(); //or SystemException(); 

. (w3wp.exe가 아직 남아 있습니다).

질문 :

  • 종료에 W3wp.exe를 의 원인이 예외의 종류?
  • 종료에 응용 프로그램 풀의 원인이 예외의 종류?

p.s. 내가 사이트의 농장에서 내 사이트를 호스팅, 웹 페이지를 작성할 수, 그리고 난 재귀를 작성하여 전체 W3wp.exe를 프로세스를 종료 할 수 있습니다 .... : 필자는 단지 기록 된 내용에 따라, 다음과 같은 시나리오를 생각하십시오 .

당신은 내 질문에 대한 답변을 주시겠습니까 ... (또 ​​다른 문제가있는 것)?

감사합니다.

+0

응용 프로그램 로그를 살펴보십시오 - 예외 세부 정보가 표시되어야합니다. – Oded

+0

@moguzalp 번호 또한 비 디버깅 모드입니다. 하지만 괜찮아. 나는 생산에서 진정한 예외는 없다. 나는 단지 어떤 예외가 무엇을 끝낼 수 있는지 이해하고 싶다 ... (단지 배우기 위해 시험한다) –

답변

1

이것은 아마도 가장 유명한 것으로 StackoverflowException입니다. Page_Load 메서드를 반복해서 호출하기 때문에 무한 루프가 원인입니다.

MSDN에서

:은 .NET Framework의 이전 버전에서

, 응용 프로그램이 ( 억제 할 재귀 복구, 예를 들어) 있는 StackOverflowException 개체를 잡을 수 있습니다. 그러나이 방법은 현재 이 아니므로 스택 오버 플로우 예외 을 안정적으로 catch하고 프로그램을 계속 실행하려면 상당한 추가 코드가 필요하므로이 방법은 현재 권장되지 않습니다. .NET Framework 버전 2.0을 시작으로

는하는있는 StackOverflowException 객체 는 시도-catch 블록에 의해 체포 할 수 없으며 해당 과정은 기본적으로 종료됩니다. 따라서 사용자는 에 코드를 작성하여 스택 오버플로를 감지하고 방지하는 것이 좋습니다. 예를 들어, 응용 프로그램이 재귀에 의존하는 경우 카운터 또는 상태 조건을 사용하여 재귀 루프를 종료합니다. 응용 프로그램 공용 언어 런타임 (CLR)를 호스트 는 CLR 스택 오버 플로우 예외 가 발생 응용 프로그램 도메인을 언로드 지정하고 해당 프로세스가 계속하도록 할 수 있습니다. 에 대한 자세한 내용은 ICLRPolicyManager 인터페이스 및 호스팅 개요를 참조하십시오.

당신이 대답 좀보고 할 수 있습니다 :

https://stackoverflow.com/a/4802309/284240

+0

안녕하세요, tim yeah 나는 압니다. 그러나 이것은 많은 사람들 중에서 단지 1 개의 예외입니다. 나는 내 마음이 orginized되기를 원한다. :'예외 (그들의 특성)가 나타낼 수있다 ': ** 1) AppPool 2) w3wp ** –

+0

나는'OutOfMemoryException'가 동일한 효과를 가질 것이라고 확신한다. – volpav

+1

@volpav nope'메모리가 부족하여 프로그램 실행을 계속할 수 없습니다. 'w3wp.exe가 아직 작동 중입니다. –

0

제외에 대한 이유는 메모리 오버 플로우. 응용 프로그램이이 문제를 일으킬 수있는 방법에는 여러 가지가 있습니다. 특정 시나리오를 추측 할 필요가 없습니다. 좋은 이미징 제공자는 오작동하는 응용 프로그램으로부터 보호되어야합니다.

+2

대답은 좋지만 ..이 질문에 대해서는 그렇지 않습니다! –

-3

답변을 추가 할 수있는 alrdy가 있습니다. 서버의 모든 웹 사이트가 별도의 AppDomain에서 실행되기 때문에 전체 프로세스가 중단됩니다. 그래서 ur 코드가 오히려 appdomain wud 만 살해당하는 경우.

+1

txt spch 2를 최소로 유지해 주시겠습니까? lso 소품 wudb 좋은 모자. – Will

관련 문제