按钮单击事件后的异常处理

本文关键字:异常处理 事件 单击 按钮 | 更新日期: 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
    }
}