2015-01-22 2 views
0
static void X(String a,String b,String c) 
    { 

     TextBox textBox3 = new TextBox(); 
         a = textBox3.Text; 

     if (a == " ") 
      { 

       throw new ArgumentNullException(a); 
      } 


     TextBox textBox4 = new TextBox(); 
        b = textBox4.Text; 

     if (b == null) 
      { 
       throw new ArgumentNullException(b); 
      } 

     TextBox textBox5 = new TextBox(); 
      c = textBox5.Text; 

      if (c == null) 
      { 
       throw new ArgumentNullException(c); 
      } 


    } 

частная пустота Go2_Click (объект отправителя, EventArgs е) { попробовать {C#: О System.ArgumentNullException

  ........//my code 
      X(Sx,Sy,V); 
     ........// my some code 
     } 
     catch (System.ArgumentNullException) 
     { 
      MessageBox.Show("Your String is not correct"); 
     } 

}

Моя программа не может сделать System.ArgumentNullException. Как я могу решить эту программу?

+0

Просьба правильно отформатируйте свой код. string.empty отличается от a == "". Проверьте вместо этого String.IsNullOrWhiteSpace. – Amit

+1

Вам нужно использовать 'string.IsNullOrEmpty()' для проверки значений –

+0

Почему вы передаете аргументы методу X, когда вы принимаете его, формируете разные текстовые поля внутри метода X? Это не значит, что для меня смысл? string.IsNullOrEmpty() внутри блоков IF для сравнения вместо сравнения с «" или нулем – F11

ответ

0

Попробуйте вместо:

throw new ArgumentNullException(c); 
    catch (System.ArgumentNullException) 
    { 
     MessageBox.Show("Your String is not correct"); 
    } 

это:

throw new ArgumentNullException("Your String is not correct"); 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
+0

Отформатируйте свой ответ. –

+0

Ловля общего исключения - это плохая практика. – Ilan321

+0

, поэтому вы можете изменить «Exception ex» на «ArgumentNullException ex» – Meydan

1

Вы должны использовать string.IsNullOrEmpty() проверить значения для string переменных. Поскольку вы присваиваете им значения в своем методе, используя textbox.Text. Они получают присвоенные им значения string.Empty. И ваши утверждения if никогда не развиваются до true, и они никогда не бросают исключение. Если вы изменяете ваши условия, как это то, что будет работать,

if (string.IsNullOrWhiteSpace(a)) 
{ 
     throw new ArgumentNullException("Thrown from first condition"); 
} 
1

, чтобы проверить, является ли строка пустого использованием выделенных функций для этого и инициализировать ArgumentNullException с именем параметра, а не с параметром.

Например, вместо

if (a == " ") 
      { 

       throw new ArgumentNullException(a); 
      } 

записи

if (string.IsNullOrWhiteSpace(a)) 
       { 

        throw new ArgumentNullException("a"); 
       } 

для

if (c == null) 
      { 
       throw new ArgumentNullException(c); 
      } 

записи

if (string.IsNullOrEmpty(c)) 
      { 
       throw new ArgumentNullException("c"); 
      } 
+0

IMHO, IsNullOrWhiteSpace и IsNullOrEmpty должны приводить к исключению ArgumentException, а не ArgurmentNullException. – ScottS

+0

Ваше право на IsNullOrWhiteSpace, но для IsNullOrEmpty это вопрос контекста;) Обычно я бросаю ArgumentNullException для if (c == null), но Thiha Lion спрашивает об ArgumentNullException. – sanguaire

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