c#multiple try和catch for textbox values

时间:2015-10-01 15:30:50

标签: c# try-catch

我试图将try尝试分组并捕获6个文本框值。在课堂上我描述了类似的6种方法:

public void Setpajamos(int newValue)
{
    if (newValue >= 0 && newValue <= 30)
        pajamos = newValue;
    else
        throw new Exception("Patikrinkite duomenis");
}

在主要表单中,我尝试并捕获代码:

try
{
    BustoKreditas.Setvaikusk(newvaikusk);
    BustoKreditas.Setpajamos(newpajamos);
    BustoKreditas.Setisipareigojimai(newisipareigojimai);
    BustoKreditas.SetPaskolosSuma(newpaskolosSuma);
    BustoKreditas.Setlaikotarpis(newlaikotarpis);
    BustoKreditas.Setpastatoamzius(newpastatoamzius);

}
catch 
{
    MessageBox.Show("value to big");    
}

问题是try和catch仅适用于第一个文本框。对于所有其他人,我可以放任何我想要的号码,它不会显示任何消息。

1 个答案:

答案 0 :(得分:1)

我假设您正在尝试收集所有错误 (在您的代码中,第一个异常将导致代码跳转到您的catch,因此不会调用任何其他方法。)

在这种情况下你可以尝试这样的事情:

public void Setpajamos(int newValue, List<string> errors)
{
   if (newValue >= 0 && newValue <= 30)
   {
      pajamos = newValue;
   }
   else
   {
      errors.Add("Patikrinkite duomenis");
   }
}

以您的主要形式:

var errors = new List<string>()
BustoKreditas.Setvaikusk(newvaikusk, errors);
BustoKreditas.Setpajamos(newpajamos, errors);
BustoKreditas.Setisipareigojimai(newisipareigojimai, errors);
BustoKreditas.SetPaskolosSuma(newpaskolosSuma, errors);
BustoKreditas.Setlaikotarpis(newlaikotarpis, errors);
BustoKreditas.Setpastatoamzius(newpastatoamzius, errors);
if (errors.Count > 0)
{
   MessageBox.Show(string.Join(Environment.NewLine, errors));
}