1. 不使用异常提示,这样只会让客户认为是程序内部出了错误,如
catch(Exception &e)
{
ShowMessage("计算利息:" + e.Message);
return false;
}
2. 进行字符到数字转换之前先进行正确性判断
if (Ed->Text.Trim() != "" && IsNumber(Ed->Text.Trim() ))
C语言中没有数字判断的函数提供,需要自己编写,而不是用捕获转换异常(str.ToDouble())来判断输入数字有效性。VB中可以用IsNumeric(str)判断是否数字
3. 有些输入需即时判断输入有效性,计算出另外一个显示项,如果输入无效,最好不用弹出模式窗体的方法提示,因为即时判断一般用到OnEditExit等事件,弹出模式窗体的时候,弹出窗体获得了焦点,必然调用OnEditExit事件,关掉模式窗体,而此时原窗体上的具有Focus的已经不是原来使用判断时的控件,个人建议使用子窗体的状态栏还是其他不具有焦点的提示方式。
4. 提交输入的时候重新进行输入检查,如果有多个OnXXXExit事件,最好先将Focus定位到没有OnXXXEnter和OnXXXExit的控件中,应同时获取尽可能所有的错误输入,并分行显示,而不是发现一个错误提示一次。
if (!IsValidData(strA))
strErr += “strA”;
if (!IsValidData(strB))
strErr += “strB”;
if (strErr != ““)
{
ShowMessage(strErr); //这时候应使用ShowMessage
return;
}
5. 注意多个关联控件,比如在计算外币折算成人民币的时候,有三个输入框,汇率,外币金额,人民币金额,三个输入框中,汇率和外币金额的改动都需要重新计算人民币金额,则两个输入框都需要加上OnXXXExit的代码,缺了一个都可能出错