【发布时间】:2014-12-01 19:05:50
【问题描述】:
我正在使用简单的错误处理,并且我认为其他一切都正确,我将如何使 if 语句检查 value 是否等于这个数组?
String[] values = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
public String Value
{
get
{
return _value;
}
set
{
if (value != values)
throw new Exception("Invalid Card Value");
_value = value;
}
}
【问题讨论】:
-
你想看看给定的值是否在数组中?
-
"我如何让 if 语句检查 Value 是否等于这个数组?",
Value是字符串类型,它永远不能等于字符串数组,而是你应该搜索,如果Value包含在数组中,例如if(!values.Contain(value)) throw new Exception.... -
旁注 - 在 setter 中抛出 vanilla Exception 似乎是个坏主意。然后调用者必须检查消息以了解如何正确处理异常。要么抛出客户端可以专门捕获和处理的自定义异常,要么在更高级别进行验证。
-
@DStanley 特别考虑到做一个简单的异常扩展是多么容易。
-
@DStanley:还有 ArgumentException 或 ArgumentOutOfRangeException,它们的描述性已经足够了。