未处理的异常错误C#
问题描述:
这是如此混乱...... 我有一组类,在这里获得方法是其中的几个:未处理的异常错误C#
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");
}
打破我的解决方案有一个错误:
An unhandled exception of type 'System.Exception' occurred in Evidencija.exe Additional information: Radno vreme mora biti u formatu '12:00h-20:00h'.
另一件事。当取消注释“Console.WriteLine
”线和注释掉“throw new Exception
”一个我得到这样的输出:
1:FALSE
1:FALSE
1:FALSE
The thread 0x1748 has exited with code 0 (0x0).
这是为什么呢运行3次?是否因为我的数据库中已经有3个存储的对象?不应该只在创建新对象时才运行?
答
这不会破坏你的解决方案,它会抛出异常,告诉它抛出的异常不会被代码中的其他东西所捕获。在第一个例子中,显然没有任何有条件的情况正在被触发,所以没有抛出异常并且你的程序继续执行。如果您在代码的其他地方多次设置属性RadnoVreme1,则会看到多行输出,如您所描述的。最后一个退出的原因是因为条件被触发(IsValid(radnovreme1) == false
),引发异常。在其他三个电话中,这种情况并未受到影响。
好像你在某处设置了4次RadnoVreme1。尝试使用断点逐步执行代码? – Striker