2010-04-22 6 views
4

컨트롤러의 생성자 내에서 발생하는 예외를 처리하는 가장 좋은 방법은 무엇입니까?asp.net MVC 컨트롤러에서 발생하는 예외 처리 생성자

내가 생각할 수있는 것은 Application_OnError()를 사용하거나 ControllerFactory에 try/catch를 넣는 것입니다.

이러한 솔루션 중 어느 것도 이상적이지 않습니다. Application_OnError는 광범위합니다. 사이트에 자체 오류 처리 기능이있는 비 -mvc 콘텐츠가 있습니다.

try/catch 블록을 사용하는 것이 다소 해킹 된 것처럼 보입니다.

다른 콘텐츠 유형 (예 : html/text/json/rss)을 제공하는 경우 ... 모든 유형의 조건을 작성해야하는 대신 조치 방법에서 예외를 처리 할 수 ​​있기를 원합니다. 어떤 종류의 오류 메시지를 제공 할 것인가.

여기에 뭔가가 누락되었거나 다른 사람이이 문제를 처리했습니다.

답변

6

처음 컨트롤러를 만들 때 ControllerFactory에서 예외가 발생하는 경우 작업 방법에서 예외를 처리 할 수있는 방법이 없습니다.

개인적으로 나는 try/catch를 수행하고 컨트롤러를 처리하는 오류를 인스턴스화하고 대신 요청을 라우트합니다.

더 나은 질문은 컨트롤러가 너무 복잡하여 충족되지 않아서 구성 할 때 예외를 throw해야한다는 것입니다. 표면 상으로는 단순히 컨트롤러를 만드는 것이 예외의 큰 원천이되어서는 안됩니다. 그렇다면 어쩌면 생성자가 아닌 동작 메서드에서 종속성을 지연 인스턴스화하고 ErrorHandlingController approach을 구현할 수 있습니다. 이렇게하면 컨트롤러 자체에 예외가 "내려"놓이게되므로 컨트롤러를 처리 할 때 컨트롤러 중심의 접근 방식을 취할 수 있습니다.

+0

감사합니다. db connection을 초기화하는 생성자에 저장소 훅업 코드가 있습니다. 나는 지금 게으르다. – Jason

+0

또는 예외를 포착하고 올바르게 처리 할 수있는 코드가있는 팩토리를 삽입하십시오. –