我试图在找到异常后停止处理并将其显示给用户,但是一旦找到一个我就无法停止我的代码......
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");
}
我试过没有运气的抛出和返回命令。我是所有这一切的新手,我用谷歌搜索它没有运气...任何想法我缺少什么?或许我一起有错误的想法。它是一个与文本框绑定的按钮单击事件,当抛出异常时,它将在标签中显示错误,供用户解析(数字太多......等)。更正并再次单击该按钮时,此时不会抛出异常,应重定向用户。任何帮助都会很棒。
答案 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
}
}