我正在使用下面的代码,偶尔boolUpdate不是TRUE或FALSE而且我得到一个异常,我不能用TRY CATCH块包围它,因为它使用'return',我怎么能正确捕获它?
if (!Boolean.Parse(boolUpdate)) return true;
答案 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;