2008-09-17 8 views
52

ELMAH은 응용 프로그램에 버블 링되지 않는 경우에도 예외를 기록합니까? 예외가 발생하고 여전히 예외를 기록 할 때 메시지를 팝업하고 싶습니다. 현재 저는 블록을 잡아 내고 메시지를 뱉어내는 데 모든 것을 사용하고 있지만 지루합니다.elmah가 catch 된 예외도 처리합니다.

답변

127

ELMAH가 Signaling이라는 새로운 기능을 지원하도록 업데이트되었습니다.

이렇게하면 ELMAH에 계속 로깅하면서 원하는대로 예외를 처리 할 수 ​​있습니다.

try 
{ 
    int i = 5; 
    int j = 0; 
    i = i/j; //Throws exception 
} 
catch (Exception ex) 
{ 
    MyPersonalHandlingCode(ex); 
    ErrorSignal.FromCurrentContext().Raise(ex); //ELMAH Signaling 
} 

예외를 다시 throw하는 것은 응용 프로그램의 흐름을 추적하기 어렵게하므로 좋지 않은 방법 일 수 있습니다. 시그널링을 사용하면 오류를 어떤 방식으로 처리하고 단순히 문서화하기를 원한다면 훨씬 더 나은 접근법입니다.

는 필터가이 문제를 처리하는 가장 깨끗한 방법입니다 DotNetSlackers on ELMAH

+8

어떤 종류의 속성/필터를 사용하여이를 달성 할 수 있습니까? 그 코드를 각 캐치 안에 넣으므로 많은 생각을합니다. 그렇게 할 수있는 종류의 필터가 있으면 좋을 것입니다. – Kuncevic

+0

아이러니하게도 dlenetslackers는 리드를 처리되지 않은 오류 페이지에 연결합니다. 이것은 트롤이 되어야만 하는가? – niico

+0

내 하루를 절약했습니다. – NMathur

6

하여이 훌륭한 가이드를 확인하시기 바랍니다. 이 솔루션을 여기에서 확인하십시오. https://stackoverflow.com/a/5936867/965935

+2

필자는 필터가 이미 try catch 블록에서 처리 된 예외를 잡을 수 없다는 것을 이해합니다. 이 답변을 확인하려면 [link] (http://stackoverflow.com/a/21864117/694457)를 참조하십시오. – frezq