这太令人困惑了...... 我有一个带有set的类,get方法在这里有几个:
public string Naziv
{
get { return naziv; }
set
{
naziv = value;
if (naziv == "")
{
throw new Exception("Morate uneti naziv radnog mesta.");
}
else if (naziv.Length < 5)
{
throw new Exception("Naziv mora biti duzi od 5 karaktera.");
}
}
}
这个很完美。但是这一个:
public string RadnoVreme1
{
get { return radnovreme1; }
set
{
radnovreme1 = value;
if (IsValid(radnovreme1) == false)
{
//Console.WriteLine("1:FALSE ");
throw new Exception("Radno vreme mora biti u formatu '12:00h-20:00h'.");
}
}
}
static bool IsValid(string value)
{
return Regex.IsMatch(value, @"^\d{2}:\d{2}h-\d{2}:\d{2}h");
}
用错误打破我的解决方案:
未处理的类型&#39; System.Exception&#39;发生在 Evidencija.exe附加信息:Radno vreme mora biti u formatu &#39; 12:00H-20:00H&#39;
另一件事。取消评论&#39; Console.WriteLine
&#39;排队并评论&#39; throw new Exception
&#39;一个我得到这个输出:
1:FALSE
1:FALSE
1:FALSE
The thread 0x1748 has exited with code 0 (0x0).
为什么这次运行3次?是因为我的数据库中已有3个存储对象吗?难道这不仅仅是在创建新对象时运行吗?
答案 0 :(得分:2)
它没有破坏你的解决方案,它会抛出你告诉它抛出的异常,它不会被代码中的任何其他内容捕获。在第一个示例中,显然没有任何条件情况被命中,因此不会抛出异常并且您的程序继续执行。如果您在代码中的其他位置多次设置属性RadnoVreme1,您将看到多行输出,如您所描述的。最后一个退出的原因是因为条件被命中(IsValid(radnovreme1) == false
)而抛出异常。在其他三个调用中,条件不会受到影响。