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

时间:2014-04-01 14:47:42

标签: c# asp.net

我试图在找到异常后停止处理并将其显示给用户,但是一旦找到一个我就无法停止我的代码......

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");
}

我试过没有运气的抛出和返回命令。我是所有这一切的新手,我用谷歌搜索它没有运气...任何想法我缺少什么?或许我一起有错误的想法。它是一个与文本框绑定的按钮单击事件,当抛出异常时,它将在标签中显示错误,供用户解析(数字太多......等)。更正并再次单击该按钮时,此时不会抛出异常,应重定向用户。任何帮助都会很棒。

4 个答案:

答案 0 :(得分:1)

最后不要使用。

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            
}

答案 1 :(得分:0)

您不应该使用例外来进行验证或控制流。您只需检查代码中的条件,并在值不满足条件时显示消息。

e.g。

int foo;

if( !Int32.TryParse( something.Text, out foo ) )
{
    lblError.Text = "You must enter a number.";
}
else
{
    Response.Redirect...
}

答案 2 :(得分:0)

您应该从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
}

答案 3 :(得分:-1)

试试这段代码:

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
    }
}