如何在返回动态类型的linq查询上实现try catch块?

时间:2013-05-13 10:40:37

标签: c# linq exception

首先,我想知道是否有必要使用linq语句来访问try catch块中的DAL,以便您可以将错误输入到日志中。其次,我有以下代码,但正如您所看到的那样,它返回了一个动态对象new {s.ID,s.Name}。我想知道我应该怎么做 try catch块中的表达式。

是否应该将包含return语句的整个块放在try catch块中,或者我应该创建一个自定义对象,并且只将填充自定义对象的初始化代码放在try catch块中,如果没有抛出异常则返回此自定义对象。

using (var rep = new Repository<Profile>())
            {
                var vals = rep.FindWhere(p => p.ProjectID == projectID)
                              .OrderBy(p => p.Name)
                              .Select(
                                  s => new
                                      {
                                          s.ID,
                                          s.Name
                                      }).ToList();
                return Json(vals, JsonRequestBehavior.AllowGet);
            }

1 个答案:

答案 0 :(得分:2)

第一个问题:不,除非您想将错误输入日志&#39;

第二个问题:

try
{
    using (var rep = new Repository<Profile>())
                {
                    var vals = rep.FindWhere(p => p.ProjectID == projectID)
                                  .OrderBy(p => p.Name)
                                  .Select(
                                      s => new
                                          {
                                              s.ID,
                                              s.Name
                                          }).ToList();
                    return Json(vals, JsonRequestBehavior.AllowGet);
                }
} 
catch(Exception ex)
{
   // use ex here
   ErrorLog.Add(ex);

   // return whatever makes sense for you clientside
   return Json(false, JsonRequestBehavior.AllowGet);

   // or just throw exception and use error callback in js
   throw;
}