如何处理具有自定义消息的不同文本框的格式异常
本文关键字:文本 异常 格式 自定义消息 何处理 处理 | 更新日期: 2023-09-27 18:02:35
我正在用sqlcommand和参数在数据库中插入数据。所有这些都在try{}部分中,之后我有一个catch{}来获取异常。我的问题是,我有一个日期文本框,我有一个整数文本框。
如何设置日期字段
`catch{FormatException)
{
messagebox.show("Your date field must be dd/mm/yyy");
}
和如何为我的整数字段
`catch{FormatException)
{
messagebox.show("That field must be integer");
}
如何区分这两个格式异常?
对于日期输入,而不是使用文本框,使用DatePicker。它将排除检查格式的需要。
<DatePicker name="datePicker"></DatePicker>
在后面的代码中获取日期选取的值,
datePicker.SelectedDate
现在只需要检查是否为整数。
int parsedValue;
if(int.TryParse(convertToInt, out parsedValue)){
// All Ok
}
else {
messageError = "That field must be integer";
// Display error contained witin messageError
}
不需要加上try catch
两个FormatException
为exc.Message
提供不同的值(其中exc是异常变量)。对于int
,它是"输入字符串格式不正确",对于DateTime
,它是"字符串未被识别为有效的日期时间"。
因此,可以只使用一个try-catch并在末尾检查这个字符串,但这可能会在后面产生问题(代码变得难以维护)。最好使用单独的try-catch块。
string messageError = null;
string convertTodate = "34/";
string convertToInt = "3.5";
try
{
int newInt = Convert.ToInt32(convertToInt);
}
catch(FormatException)
{
messageError = "That field must be integer";
}
try
{
DateTime newDate = Convert.ToDateTime(convertTodate);
}
catch(FormatException)
{
messageError = "Your date field must be dd/mm/yyy";
}
if(string.IsNullOrEmpty(messageError))
{
// All Ok
}
else
{
// Display error contained witin messageError
}