按钮单击事件后的异常处理
本文关键字:异常处理 事件 单击 按钮 | 更新日期: 2023-09-27 17:56:11
我试图在发现异常后停止处理并将其显示给用户,但一旦找到异常,我就无法让我的代码停止......
try
{
//Someting
}
catch (Exception ex)
{
lblerror.Text = (ex.Message);
//// STOP CODE WHEN EXCEPTION IS FOUND SO USER CAN FIX THE CAUSE
}
finally
{
Response.Redirect("//hud/account.aspx");
}
我尝试过抛出和返回命令,但没有运气。我对这一切都是新手,我已经用谷歌搜索了它,但没有运气......任何想法我错过了什么?或者也许我的想法都错了。这是一个与文本框绑定的按钮单击事件,当引发异常时,它将在标签中显示错误供用户解决(数字太多...等)。更正并再次单击按钮时,这次不会引发异常,应重定向用户。任何帮助都会很棒。
最后不使用。
try
{
//Someting
Response.Redirect("//hud/account.aspx");
}
catch (Exception ex)
{
lblerror.Text = (ex.Message);
//// STOP CODE WHEN EXCEPTION IS FOUND SO USER CAN FIX THE CAUSE
}
不应使用异常来执行验证或控制流。您只需检查代码中的条件,如果值不满足条件,则显示一条消息。
例如
int foo;
if( !Int32.TryParse( something.Text, out foo ) )
{
lblError.Text = "You must enter a number.";
}
else
{
Response.Redirect...
}
您应该从 finally 块中删除重定向逻辑。因为最终块总是在遇到异常或未遇到异常的情况下执行。
也许你应该尝试下面列出的一些东西@user3401335。他已将重定向作为 try 块中的最后一个语句移动。您的核心逻辑保持在顶部,如果它成功并且没有遇到异常,那么它允许您重定向。否则它会在异常代码的帮助下阻止您...
您应该尝试如下:
try
{
//Something
Response.Redirect("//hud/account.aspx");
}
catch (Exception ex)
{
lblerror.Text = (ex.Message);
// STOP CODE WHEN EXCEPTION IS FOUND SO USER CAN FIX THE CAUSE
}
finally
{
// PUT IN SOMETHING HERE THAT YOU WANT ALWAYS TO GET EXECUTED
}
试试这段代码:
bool iserror = false;
try
{
int a = 0;
int b = 1;
int c = b / a;
Response.Redirect("//hud/account.aspx");
}
catch (Exception ex)
{
lblerror.Text = (ex.Message);
iserror = true;
}
finally
{
if (!iserror)
{
//do something if you want
}
}