Asp.net mvc 4 在c#mvc.net层中处理异常
我需要一个建议。 有一个MVC操作,它通过一系列调用与数据库交互:控制器->服务->存储库->数据库上下文。 若存储库出现问题(EntityFramework抛出异常),我需要在存储库中捕获它,记录并传递回控制器操作(用户必须知道所需的操作尚未执行)。 最好的方法是什么:Asp.net mvc 4 在c#mvc.net层中处理异常,asp.net-mvc-4,Asp.net Mvc 4,我需要一个建议。 有一个MVC操作,它通过一系列调用与数据库交互:控制器->服务->存储库->数据库上下文。 若存储库出现问题(EntityFramework抛出异常),我需要在存储库中捕获它,记录并传递回控制器操作(用户必须知道所需的操作尚未执行)。 最好的方法是什么: 捕捉和重发异常在每个上层玩家中都会出现此异常 从下层捕捉并传递布尔状态(正常/错误) 你还可以提供什么 谢谢。最重要的是不要丢失堆栈跟踪,通常最好的计划是让异常冒泡到最外层的try/catch,这样做确保您只抛出而不是抛出ex
谢谢。最重要的是不要丢失堆栈跟踪,通常最好的计划是让异常冒泡到最外层的try/catch,这样做确保您只抛出
而不是抛出ex
(在下面的代码中)throw ex
类似于从代码中的该点引发新异常,可能会丢失重要错误信息。最重要的是,当有人来修复存储库中发生的任何问题时,他们拥有所有错误详细信息。通常,与其隐瞒真正的错误,不如根本不去捕捉
您可以在存储库中捕获并将成功/失败bool传递回UI层。如果您这样做,请确保记录整个堆栈跟踪和所有内部执行,请考虑从代码中的单个点调用存储库,在该代码中,您正在捕获并记录所有异常,不同位置的错误处理不同的日志记录会导致丢失的错误细节。
存储库中的try/catch可能如下所示:
try
{
// code which may cause an exception
}
catch (Exception ex)
{
// You can log here
throw;
}
这在不同的线程上已经讨论了很多,所以您应该阅读。最重要的是不要丢失堆栈跟踪,通常最好的计划是让异常冒泡到最外层的try/catch,要做到这一点,请确保您只
抛出,而不是抛出ex
(在下面的代码中)throw ex
类似于从代码中的该点引发新异常,可能会丢失重要错误信息。最重要的是,当有人来修复存储库中发生的任何问题时,他们拥有所有错误详细信息。通常,与其隐瞒真正的错误,不如根本不去捕捉
您可以在存储库中捕获并将成功/失败bool传递回UI层。如果您这样做,请确保记录整个堆栈跟踪和所有内部执行,请考虑从代码中的单个点调用存储库,在该代码中,您正在捕获并记录所有异常,不同位置的错误处理不同的日志记录会导致丢失的错误细节。
存储库中的try/catch可能如下所示:
try
{
// code which may cause an exception
}
catch (Exception ex)
{
// You can log here
throw;
}
这已经在不同的线程上讨论了很多,所以,您应该阅读