问题描述
就像我有一个 else if 或 try catch 语句。如果语句失败或捕获到未处理的异常,我如何停止执行特定的代码行
我之前已经发布过这个问题,所以我只是重新整理一下。
如果你不希望程序在 try catch 失败时执行某行代码,你会怎么做?
try
{
PRECIO = Convert.Todouble(TBPRECIO.Text);
CANTIDAD = Convert.Todouble(TBCANTIDAD.Text);
CATEGORIA = Convert.Todouble(TBCATEGORIA.Text);
}
catch
{
MessageBox.Show("NO PUEDE HABER ESPACIOS VACIOS");
TBPRECIO.Focus();
}
解决方法
我认为您所要求的一般解决方案是,您可以在 try 块之外声明一个变量,并在要检查的行执行后将其设置在 try 块内。
bool CANTIDADRead = false;
try
{
PRECIO = Convert.ToDouble(TBPRECIO.Text);
CANTIDAD = Convert.ToDouble(TBCANTIDAD.Text);
CANTIDADRead = true;
CATEGORIA = Convert.ToDouble(TBCATEGORIA.Text);
}
catch
{
MessageBox.Show("NO PUEDE HABER ESPACIOS VACIOS");
TBPRECIO.Focus();
}
if(CANTIDADRead)
//do stuff
不过,在您的特定情况下,您最好切换到 double.TryParse
:
bool PRECIOREAD = double.TryParse(TBPRECIO.Text,out PRECIO);
bool CANTIDADREAD = double.TryParse(TBCANTIDAD.Text,out CANTIDAD);
bool CATEGORIAREAD = double.TryParse(TBCATEGORIA.Text,out CATEGORIA);
这将尝试解析这些字符串的值并返回解析是否成功。 out 关键字意味着你传入的变量会被方法更新,但如果解析失败,它将不是正确的值。