Как написать простую функцию ErrorMessage

#c# #asp.net #error-handling #try-catch

#c# #asp.net #обработка ошибок #попробуйте-поймайте

Вопрос:

Я пытаюсь понять, как написать простую функцию сообщения об ошибке, которая реагировала бы, если бы строка была введена в текстовые поля вместо цифр.

Допустим, я хочу вычислить значение 1 и значение 2, но отобразить ошибку в метке, если была введена строка.

ПРИМЕР

1 1 = 2

a 1 = ошибка

Мой код

Вычислить.cs

 public static string ErrorMessage()
    {
        string msg = "";
        try
        {
            //do sth
        }
        catch (Exception ex)
        {
            msg = "Wrong value";
        }
        return msg;
    }
  

Calculator.asxc

 protected void Button1_Click(object sender, EventArgs e)
    {
    try
        {

            //calculate - works
        }
    catch
        {
             Error.Text = Calculate.ErrorMsg();
        }
  

Также пробовал что-то подобное, но, похоже, это не работает:

Вычислить.cs

 public static bool ErrorMessage(string value1, string value2)
    {
        bool check = true;
        string error;
        if (value1 != "" amp;amp; value2 != "")
        {
            check = true;
        }
        if (value1 =="" || value2 =="")
        {
            check = false;
            error = "Error!";
        }
        return check;    
    }
  

Calculator.asxc

 protected void Button1_Click(object sender, EventArgs e)
    {
    try
        {

            //calculate - works
        }
        //
        catch
        {
        bool res = false;

            res = Calculate.ErrorMessage(textBox1.Text, textBox2.Text);

            Error.Text = res.ToString();
        }
  

Я знаю, что второй метод не проверяет наличие числовых чисел, но я просто пытался реализовать некоторую логику и посмотреть, работает ли ti .. но ничего не получается

Я потерялся … пожалуйста, помогите

Ответ №1:

Насколько я понимаю, вы работаете с числами и хотите, чтобы ваше приложение отображало сообщение об ошибке, если пользователь вводит строку вместо числа.

Вы должны использовать Int32.Parse() Int32.TryParse() методы или. Подробнее о Parse и TryParse здесь .

Метод TryParse достаточно хорош, поскольку он не выдает ошибку, если он не может разобрать строку в целое число, вместо этого он возвращает false .

Вот пример того, как использовать этот метод в ваших классах, измените метод button1_Click примерно так:

 protected void Button1_Click(object sender, EventArgs e)
{
    int a;
    int b;

    // Here we check if values are ok
    if(Int32.TryParse(textBox1.Text, out a) amp;amp; Int32.TryParse(textBox2.Text, b))
    {
        // Calculate works with A and B variables
        // don't know whats here as you written (//calculate - works) only
    }
    // If the values of textBoxes are wrong display error message
    else
    {
        Error.Text = "Error parsing value! Wrong values!";
    }
}
  

Если вам нужно использовать метод ErrorMessage, то вот как вы можете изменить свой метод ErrorMessage, но это сложнее, первый пример проще:

 public static string ErrorMessage(string value1, string value2)
{
    int a;
    int b;

    // If we have an error parsing (note the '!')
    if(!Int32.TryParse(value1, out a) || !Int32.TryParse(value2, b))
    {
        return "Error parsing value! Wrong values!";
    }

    // If everything is ok
    return null;
}
  

Надеюсь, это поможет, спросите, нужна ли вам дополнительная информация.

Комментарии:

1. да, вы понимаете, что я пытаюсь сделать … но как я могу отобразить функцию void в другой веб-форме? кроме того … предполагается, что функция ErrorMessage() проверяет заданные значения value1, value2…

2. Отредактировал первый пример и добавил пример сообщения об ошибке, если вам нужна эта функция. Проверьте это.

3. это работает идеально! попытаюсь разобраться в коде и понять его. спасибо, чувак!