#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. это работает идеально! попытаюсь разобраться в коде и понять его. спасибо, чувак!