2016-05-13 3 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

Похоже, вы установили RadnoVreme1 в 4 раза. Попробовали пройти через свой код с помощью контрольных точек? – Striker

ответ

2

Это не нарушает ваше решение, оно бросает исключение, которое вы говорите ему, чтобы бросить, которое не попадает ни в что другое в вашем коде. В первом примере, по-видимому, ни один условный случай не попадает, поэтому исключение не генерируется и ваша программа продолжает выполняться. Если вы устанавливаете свойство RadnoVreme1 несколько раз в другом месте вашего кода, вы увидите несколько строк вывода, которые вы описываете. Причина, по которой последний выходит, заключается в том, что условие удалено (IsValid(radnovreme1) == false), которое выдает исключение. В остальных трех вызовах это условие не попадает.

Смежные вопросы