为什么我的程序在 C# 中出现未处理的异常时不会返回到丢失的变量框

如何解决为什么我的程序在 C# 中出现未处理的异常时不会返回到丢失的变量框

当我运行程序时,我故意将其中一个变量留空,这样我就可以得到 MessageBox.Show();,表明您不能忘记任何变量,否则程序将不会计算最终输出的结果。>

但是当我点击确定时,应用程序仍然计算结果(这是错误的,因为缺少一个变量)。

我使用 TBPRECIO.Focus(); 返回丢失的变量,但没有它它仍然完成。

private void ENTradAS()
{
    try
    {
        PRECIO = Convert.Todouble(TBPRECIO.Text);
        CANTIDAD = Convert.Todouble(TBCANTIDAD.Text);
        CATEGORIA = Convert.Todouble(TBCATEGORIA.Text);
    }
    catch
    {
        MessageBox.Show("there cannot be any empty variable");
        TBPRECIO.Focus();
    }
}

解决方法

您是否尝试过使用 if-else 语句?

      if(TBPRECIO.Text==""||TBCANTIDAD.Text==""||TBCATEGORIA.Text){ 
    MessageBox.Show("there cannot be any empty variable");
                TBPRECIO.Focus();
     
    }
     else{
     //Your Condition
    }
,

System.Convert.ToDouble 如果值为 null 会成功,但如果它是空字符串则会失败。具有 Text 属性的表单控件(无论是 winform 还是 webform)从不返回 null。

如果您的对象不是控件,您可能会得到一个空值而不是空字符串。无论如何,您的错误信息过于笼统,实际上具有误导性。

const msgSuffix = “ cannot be empty and must be a number”
double pr =0,cd=0,ca=0;
if ((!double.TryParse(TBPRECIO.Text,out pr)) || string.IsNullOrEmpty(TBPRECIO.Text)) {
     MessageBox.Show($"TBPRECIO{msgSuffix}");
     TBPRECIO.Focus();
}
else if ((!double.TryParse(TBCANTIDAD.Text,out cd)) || string.IsNullOrEmpty(TBCANTIDAD.Text))
   {
     MessageBox.Show($"TBCANTIDAD{msgSuffix}");
     TBCANTIDAD.Focus();
}
else if((!double.TryParse(TBCATEGORIA.Text,out ca)) || string.IsNullOrEmpty(TBCATEGORIA.Text))){
     MessageBox.Show($"TBCATEGORIA{msgSuffix}");
     TBCATEGORIA.Focus();
}
else {
    PRECIO = pr;
    CANTIDAD = cd;
    CATEGORIA = ca;
}

现在,您会收到一条错误消息,其中提到了正确的字段并准确描述了情况,从而使其更加有效。

,

"Focus()" 不会妨碍其他代码的执行。它只是将键盘焦点放在 TBPRECIO TextBox 控件上。 如果您希望某些计算代码不执行,则必须在计算代码的开头放置一个前提条件检查“are-all-valuese-entered-and-valid”。

如何开始/触发计算?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?