C# 如何在返回动态类型的linq查询上实现try-catch块?
首先,我想知道是否有必要在try-catch块中使用访问DAL的linq语句,以便将错误输入到日志中。其次,我有以下代码,但正如您所看到的,它返回一个动态对象C# 如何在返回动态类型的linq查询上实现try-catch块?,c#,linq,exception,C#,Linq,Exception,首先,我想知道是否有必要在try-catch块中使用访问DAL的linq语句,以便将错误输入到日志中。其次,我有以下代码,但正如您所看到的,它返回一个动态对象new{s.ID,s.Name}。我想知道我该怎么说这样的话 try-catch块中的表达式 是否应将整个块(包括return语句)放在try-catch块中,还是应创建一个自定义对象,并仅将填充自定义对象的初始化代码放在try-catch块中,如果未引发异常,则返回此自定义对象 using (var rep = new Repositor
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);
}
使用(var rep=new Repository())
{
var vals=rep.FindWhere(p=>p.projectd==projectd)
.OrderBy(p=>p.Name)
.选择(
s=>新
{
s、 身份证,
s、 名字
}).ToList();
返回Json(VAL、JsonRequestBehavior.AllowGet);
}
第一个问题:否,除非您想“将错误输入日志”
第二个问题:
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;
}
试试看
{
使用(var rep=new Repository())
{
var vals=rep.FindWhere(p=>p.projectd==projectd)
.OrderBy(p=>p.Name)
.选择(
s=>新
{
s、 身份证,
s、 名字
}).ToList();
返回Json(VAL、JsonRequestBehavior.AllowGet);
}
}
捕获(例外情况除外)
{
//在这里使用ex
ErrorLog.Add(ex);
//返回任何对你有意义的客户端
返回Json(false,JsonRequestBehavior.AllowGet);
//或者在js中抛出异常并使用错误回调
投掷;
}
不清楚你在问什么。匿名类型有什么问题?嗨,对不起,请查看更新