C#在使用return时捕获bool异常

时间:2009-09-22 21:53:23

标签: c# try-catch

我正在使用下面的代码,偶尔boolUpdate不是TRUE或FALSE而且我得到一个异常,我不能用TRY CATCH块包围它,因为它使用'return',我怎么能正确捕获它?

if (!Boolean.Parse(boolUpdate)) return true;

5 个答案:

答案 0 :(得分:20)

如何使用Boolean.TryParse呢?

bool result = false;
Boolean.TryParse( boolUpdate, out result );
return !result;

答案 1 :(得分:9)

首先,一般情况:只是因为你退出一个块并不意味着你不能把它放在一个try / catch中:

try
{
    if ( whatever )
        return true;
}

catch ( Exception E )
{
    HandleMyException( E );
    return false;
}

......这是完全合法的。与此同时,正如其他海报所写的那样,TryParse()可能就是你想要的特殊情况。

答案 2 :(得分:6)

仅当字符串为“true”且不生成异常时,以下内容才会返回true。

        bool value;
        return bool.TryParse(boolUpdate, out value) && value;

答案 3 :(得分:4)

当boolUpdate不包含TRUE或FALSE时,你应该捕获异常情况,但是当出现这种情况时你想做什么?你不要忽略这个例外,不是吗,因为我觉得你还想从方法中回来?

您可以使用Boolean.Parse,而不是使用Boolean.TryParse,如果Parse操作失败,则返回false(例如,您的案例中的boolUpdate参数不包含true或false)。< / p>

或者,你可以这样做:

try
{
   return Boolean.Parse (boolUpdate)
}
catch(FormatException ex )
{
   return false;
}

但是,我更喜欢使用TryParse:

bool result;
bool containsBool = Boolean.TryParse (boolUpdate, out result);
return containsBool && result;

答案 4 :(得分:0)

你可以尝试使用Boolean.TryParse ...它不会抛出,如果解析成功,会将解析后的值放在out参数中,否则它将具有默认值,如果解析是,则返回true成功的。

 string blah = "true";
 bool val;
 Boolean.TryParse( blah, out val);
 return val;