컨트롤러의 작업에서 호출 된 코드에서 예외가 발생하면 어떻게 처리해야합니까? try-catch 문이 전혀없는 모범 사례에 대한 사례가 많이 있습니다. 호출이 액세스 할 수있는 데이터베이스에있는 경우컨트롤러 (ASP.NET MVC)에서 예외 처리
public ViewResult Index()
{
IList<CustomModel> customModels = _customModelRepository.GetAll();
return View(customModels);
}
은 분명히이 코드가 예외를 던질 수 있고 우리는 예를 들어, 엔티티 프레임 워크와 같은 ORM을 사용하는 예를 들어, 저장소에서 데이터에 액세스.
그러나 내가 볼 수있는 것은 예외가 발생하여 사용자에게 불쾌한 오류 메시지가 표시된다는 것입니다.
HandleError 특성을 알고 있지만 처리되지 않은 예외가 발생하면 오류 페이지로 리디렉션하는 데 주로 사용된다는 것을 알고 있습니다. 물론
,이 코드는 시도 - 캐치에 싸여 할 수 있지만, 더 많은 논리가 특히 잘 분리되지 않습니다
public ViewResult Index()
{
if (ValidationCheck())
{
IList<CustomModel> customModels = new List<CustomModel>();
try
{
customModels = _customModelRepository.GetAll();
}
catch (SqlException ex)
{
// Handle exception
}
if (CustomModelsAreValid(customModels))
// Do something
else
// Do something else
}
return View();
}
은 이전에 내가 좋아하는 예외를 던질 수있는 모든 코드를 추출했다 데이터베이스 호출은 오류를 처리하고 사용자에게 메시지를 표시하기 위해 다시 메시지를 반환하는 DataProvider 클래스로 호출합니다.
이 문제를 처리하는 가장 좋은 방법은 무엇입니까? 나는 예외 페이지로 돌아 가기를 원하지 않는다. 대신, 정상적인보기로 사용자에게 오류 메시지가 표시되어야합니다. 이전 방법이 정확 했습니까? 아니면 더 나은 솔루션이 있습니까?
: 나는 오류를 처리하는 컨트롤러를 하나에 여러 프로젝트의 referenes을 가지고 있기 때문에 – NovaJoe