System.Exception:错误的语法我找不到问题
问题描述:
所以我有一个网格视图与复选框。 这是页面背后的代码。System.Exception:错误的语法我找不到问题
protected void BtnApproveUsers_Click(object sender, EventArgs e)
{
var num = new List<int>();
try
{
for (var i = 0; i< GvApproveUser.Rows.Count; i++)
{
var row = GvApproveUser.Rows[i];
var isChecked = ((CheckBox) row.FindControl("ChbSelect")).Checked;
if (isChecked)
{
num.Add(System.Convert.ToInt32(GvApproveUser.Rows[i].Cells[1].Text));
Authentication.ApproveUser(num, GvApproveUser.Rows.Count);
}
}
throw new Exception("The registration forms were approved.");
}
catch (Exception exception)
{
throw new Exception(exception.Message);
}
}
这是方法。
public static void ApproveUser(List<int> userIds, int rowCount)
{
using (var connection = Utils.Database.GetConnection())
try
{
for (var i = 0; i < rowCount; i++)
{
using (var command = new SqlCommand("UPGRADE [Users] SET [Role] = @role WHERE [UserID] = @userId", connection))
{
command.Parameters.AddWithValue("@role", "User");
command.Parameters.AddWithValue("@userId", userIds[i]);
command.ExecuteNonQuery();
}
}
}
catch (Exception exception)
{
throw new Exception(exception.Message);
}
}
这是个例外:
附近有语法错误 '角色'。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。
异常详细信息:System.Exception:“角色”附近的语法不正确。
源错误:
52行:{ 53行:
线54:抛出新的异常(exception.Message); 第55行:} 第56行:
我找不到问题。请帮助。
答
考虑将您的SQL中的关键字UPGRADE
更改为UPDATE
,也许就是这样。
答
你的sql语句应该不是UPDATE而是UPGRADE吗?
using (var command = new SqlCommand("UPDATE [Users] SET [Role] = @role WHERE [UserID] = @userId", connection))
答
首先,你的意思是UPDATE
而不是UPGRADE
在你的sql?
其次,如果你改变你的异常块如下:
catch (Exception exception)
{
throw;
}
,那么你将保留原始堆栈跟踪给你造成错误的确切的行号。
答
题外话,你为什么抛出一个异常,似乎是通知用户注册表已被批准?
throw new Exception("The registration forms were approved.");
+1
为什么地球上,在这两种方法中,OP是否会捕获所有的异常,只是为了重新抛出它们而成为一个香草异常呢? (并且在此过程中丢失所有堆栈跟踪,异常特定的信息等。) – LukeH 2009-12-09 13:08:07
或者,如果你不打算对它做任何事情,不要打扰它。 – cjk 2009-12-09 12:36:57