2016-05-13 110 views
0

这是如此混乱...... 我有一组类,在这里获得方法是其中的几个:未处理的异常错误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个存储的对象?不应该只在创建新对象时才运行?

+2

好像你在某处设置了4次RadnoVreme1。尝试使用断点逐步执行代码? – Striker

回答

2

这不会破坏你的解决方案,它会抛出异常,告诉它抛出的异常不会被代码中的其他东西所捕获。在第一个例子中,显然没有任何有条件的情况正在被触发,所以没有抛出异常并且你的程序继续执行。如果您在代码的其他地方多次设置属性RadnoVreme1,则会看到多行输出,如您所描述的。最后一个退出的原因是因为条件被触发(IsValid(radnovreme1) == false),引发异常。在其他三个电话中,这种情况并未受到影响。