MVC 5 Jquery加载 - 捕获内部异常

时间:2015-04-10 11:19:03

标签: ajax asp.net-mvc entity-framework exception

我有一个部分视图,它从SQL过程加载ObjectResult。这是使用内置的EF方法。

public virtual ObjectResult<Something_Result> getSomething()
{
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Something_Result>("getSomething");
}

所以通常的问题是来自数据库的超时,我想表明这一点。但我似乎无法在Ajax.Load()函数的异常对象中找到它。 在responseText中,我只获得"{"message":"An error occurred while executing the command definition. See the inner exception for details."}"并且状态为:500

这也是获取内部异常的简单方法吗? 以下是Ajax.load()函数http://i.imgur.com/ZIrTrMU.jpg抛出的异常 这是EF的内部例外:http://i.imgur.com/LgOhOlB.png

1 个答案:

答案 0 :(得分:2)

您可以在数据访问层中放置一个try catch块,您可以在其中调用getSomething方法并在堆栈中发送相应的响应文本。根据您放置catch块的位置,您可以检查是否:

if(ex.Number == -2)

if(ex.InnerException != null && ex.InnerException.Number == -2)
 return Json(new { successful = false, Message = "Timeout" });

并返回适当的响应文本作为Json响应,或者如果只想处理TimeOutException,则可以将特定的catch块放入&#39; Timeout Exception&#39;

catch(TimeoutException ex)  
{  return Json(new { successful = false, Message = "Timeout" }); }