모든 것을 포획하고 MessageBox.Show (ex.message)를 사용하여 사용자에게 메시지로 오류를 처리하거나 그냥 기록한 Winforms 세계에서 왔습니다. 이제 웹 (MVC 3) 세계에 있는데 적절한 오류 처리 방법을 사용하는 방법에 대한 명확한 코드 예제를 찾을 수없는 것 같습니다.MVC 3 오류 처리의 적절한 코딩 예제
사용자의 클릭을 컨트롤러 액션 실행 링크 :
Function SelectAlertKPIs() As ActionResult
Try
Return PartialView()
Catch ex As Exception
TempData("ErrorMessage") = "There was a problem during page load: " & ex.Message & vbCrLf & vbCrLf & ex.StackTrace
Return RedirectToAction("HttpError", "Error")
End Try
End Function
이보기는 AJAX 바인딩 함께 Telerik 그리드로드를, 이제 바인딩 실행을이 작업을 제가 사용하고 무엇을 보여주지 :
Public Shared Function All() As IList(Of AlertKPI)
Dim l As IList(Of AlertKPI) = Nothing
Try
Using dc As New AdminAlertKPIDataContext(TripleDESSecurity.Decrypt(SharedData.PortalCnx))
l = (From d In dc.AdminAlertKPIs Order By d.ID Select New AlertKPI With {
.ID = d.ID,
.KPI = d.KPI,
.KPIName = d.KPIName,
.KPIDescription = d.KPIDescription
}).ToList
End Using
Return l
Catch ex As Exception
Throw
Finally
If Not l Is Nothing Then l = Nothing
End Try
End Function
이 내 잘못입니다 : 데이터를 얻기 위해이 메소드를 호출
<GridAction()> _
Function _SelectAlertKPIs() As ActionResult
Try
Return PartialView(New GridModel(AlertKPIRepository.All()))
Catch ex As Exception
TempData("ErrorMessage") = "There was a problem during page load: " & ex.Message & vbCrLf & vbCrLf & ex.StackTrace
Return RedirectToAction("HttpError", "Error")
End Try
End Function
orController 행동 : 나는 의도적으로 던져 내 컨트롤러 액션에 코드를 추가 할 경우 지금
<customErrors mode="On" defaultRedirect="/Error/HttpError">
<error statusCode="404" redirect="/Error/Http404" />
</customErrors>
:
Public Function HttpError() As ActionResult
Dim s As String = String.Empty
s = TempData("ErrorMessage")
ViewData("ErrorMessage") = "An error occurred. " & s
Return PartialView("Error")
End Function
Public Function Http404() As ActionResult
Try
ViewData("ErrorMessage") = "The page you requested could not be found"
Return View("Error")
Catch ex As Exception
Return View("Error")
End Try
End Function
이것은 내가 내 Web.config의에서이 무엇
Throw New HttpUnhandledException
그런 다음 그것을 catch 블록으로 떨어지고 HttpError 액션으로 라우팅됩니다. Twice! 그리고 내 Error.aspx 뷰가 열리지 않는다. 대신 JSON 결과가 없거나 500 내부 서버 오류가 발생한다. 나에게 의미가 없다. 기본적으로, 나는 내가하는 일을 모른다.
그리고 정말 좋은 지침을 사용할 수 있습니다 ....
당신은[HandleErrorAttribute]
으로 볼 필요가
실제 코드 샘플을 제공 할 수 있습니까? 많은 사람들이 '이것들을 들여다 보거나 그 안에있다'고 합니다만, 각각의 안에 올바른 방법이 무엇인지에 관해서는 너무 많은 소음이 있습니다. 내가 제공 한 코드에 연결하기위한 실제 예를 찾고 있습니다. 나는 또한 당신이 왜 try/catch에서 벗어나라고 말하는지 이해하지 못합니다. 이것은 오염이 아니며, 내가 배운 것에서부터 순수한 안전입니다. Try/Catch를 사용하지 않는 것은 항상 내 세계에서 끔찍한 일이었습니다. 그래서 필자는 왜 내가 그 패러다임에서 벗어나야하는지에 대해 앞장서 서 감당할 수 없다. –