C# 如何在方法中进行错误检查?

C# 如何在方法中进行错误检查?,c#,C#,如何将这些错误检查放入方法中?用户不能使程序崩溃,数值必须在0到1000000之间。这就是我目前所拥有的 如果有一个空字段,则必须有一条错误消息:请在缺少的字段中输入 private void btnCalculate\u单击(对象发送者,事件参数e) { 尝试 { //更改文本框中的值并将其切换为十进制 decimal firstNumber=Convert.ToDecimal(txtooperation1.Text); 十进制秒数=Convert.ToDecimal(txtooperatio

如何将这些错误检查放入方法中?用户不能使程序崩溃,数值必须在0到1000000之间。这就是我目前所拥有的

如果有一个空字段,则必须有一条错误消息:请在缺少的字段中输入

private void btnCalculate\u单击(对象发送者,事件参数e)
{
尝试
{
//更改文本框中的值并将其切换为十进制
decimal firstNumber=Convert.ToDecimal(txtooperation1.Text);
十进制秒数=Convert.ToDecimal(txtooperation2.Text);
string mathSymbol=txtOperator.Text;//已经是字符串变量
小数结果=0;
//调用该方法
结果=计算(第一个数字、第二个数字、数学符号、结果);
如果(mathSymbol!=“/”&&mathSymbol!=“*”&&mathSymbol!=“+”&&mathSymbol!=“-”)
{
txtOperator.Text=“”;
MessageBox.Show(“错误无效运算符”);
}
如果(第一个数字=100000 | |第二个数字=1000000)
{
txtResult.Text=“”;
MessageBox.Show(“数字必须大于0且小于1000000”);
txt1.Text=“”;
txt2.Text=“”;
txtOperator.Text=“”;
}
}
捕获(格式化异常)
{
MessageBox.Show(“请输入值。”,“错误”);
}
捕获(异常操作)
{
MessageBox.Show(op.Message,“ERROR”);
}
}
//方法计算-金额=计算,然后计算=结果
专用十进制计算(十进制num1、十进制num2、字符串符号、十进制金额)
{    
if(symbol==“+”)//检查用户是否输入+然后添加数字
金额=num1+num2;
else if(symbol==“-”)//检查用户是否输入了-然后是负数
金额=num1-num2;
else if(symbol==“*”)//检查用户是否输入*然后乘以数字
金额=num1*num2;
else if(symbol==“/”)//检查用户是否输入a/然后除以数字
金额=num1/num2;
txtResult.Text=amount.ToString(“f4”);
退货金额;
}
私有void btnExit\u单击(对象发送者,事件参数e)
{
this.Close();//如果按下退出按钮,则关闭窗体
}
私有void clearResult(对象发送方,事件参数e)
{
txtResult.Text=”“;//如果更改了txtOperator1,则清除结果
}
私有无效清除结果(对象发送方,事件参数e)
{
txtResult.Text=”“;//如果txtOperator被更改,则清除结果
}
私有void ClearResults3(对象发送方,事件参数e)
{
txtResult.Text=”“;//如果更改了txtOperator2,则清除结果
}
}
通常,如果号码无效,您会使用转换和输出消息。例如:

decimal firstNumber;
decimal secondNumber;

if (!decimal.TryParse(txtOperand1.Text, out firstNumber))
{
    MessageBox.Show("Number is not valid.");
    return;
}
if (firstNumber <= 0 || firstNumber >= 1000000)
{
    MessageBox.Show("Number must be > 0 and < 1000000");
    return;
}
decimalfirstnumber;
十进制数;
if(!decimal.TryParse(txtooperation1.Text,out firstNumber))
{
MessageBox.Show(“数字无效”);
返回;
}
如果(firstNumber=1000000)
{
MessageBox.Show(“数字必须大于0且小于1000000”);
返回;
}
你可以用第二个数字做类似的事情

或者,只需将整个过程封装在一个方法中并调用它,让它返回一个
bool
,以指示数字是否有效。

下面是我的答案

private int ValidInput(string operand1, string operand2, string mathSymbol, out decimal firstNumber, out decimal secondNumber out string errorMsg)
{
    int errorCode  ;

    errorMsg = string.Emtpy ;
    firstNumber = 0 ;
    secondNumber = 0 ;

    try 
    {
        if ((mathSymbol != "/") && (mathSymbol != "*") && (mathSymbol != "+") && (mathSymbol != "-"))
        {
            errorCode = 1 ;
            errorMsg = "ERROR invalid operator";
        }   
        else
        {
            errorCode = 2 ;
            firstNumber = Convert.ToDecimal(operand1);

            if (firstNumber <= 0 || firstNumber >= 1000000)
            {
                errorCode = 3 ;
                errorMsg = "first number must be greater than 0 and less than 1,000,000" ;
            }
            else
            {
                errorCode = 4 ;
                secondNumber = Convert.ToDecimal(operand2);

                if (secondNumber <= 0 || secondNumber >= 1000000)
                {   
                    errorCode = 5 ;
                    errorMsg = "second number must be greater than 0 and less than 1,000,000" ;
                }
                else
                {
                    errorCode = 0;
                }
            }

        }
    }
    catch (FormatException  fe)
    {
        errorMsg = fe.Message ;
    }
    catch (OverflowException oe)
    {
        errorMsg = oe.Message ;
    }
    return errorCode
}
private void btnCalculate_Click(object sender, EventArgs e) 
{
    decimal firstNumber ;
    decimal secondNumber ;
    string mathSymbol = txtOperator.Text;   // already a string variable
    decimal result = 0;
    int errorCode ;
            string errorMsg ;

    errorCode = ValidInput(txtOperand1.Text.Trim(), txtOperand2.Text.Trim(), mathSymbol, out firstNumber, out secondNumber out errorMsg) ;

    //if there was no error
    if(errorCode == 0)
    {
        //calls the calculate method
        result = calculate(firstNumber, secondNumber, mathSymbol, result);

        //you can use the errorCode number to decide which fields to clear or provide more usefull message
    }
    else
    {
        MessageBox.Show(errorMsg, "ERROR");
    }
}
private int ValidInput(字符串操作数1、字符串操作数2、字符串mathSymbol、输出十进制第一个数字、输出十进制第二个数字输出字符串errorMsg)
{
国际误码;
errorMsg=string.Emtpy;
firstNumber=0;
第二个数字=0;
尝试
{
如果((mathSymbol!=“/”&&(mathSymbol!=“*”&&(mathSymbol!=“+”&)(mathSymbol!=“-”)
{
错误代码=1;
errorMsg=“错误无效运算符”;
}   
其他的
{
错误代码=2;
firstNumber=Convert.ToDecimal(操作数1);
如果(firstNumber=1000000)
{
错误代码=3;
errorMsg=“第一个数字必须大于0且小于1000000”;
}
其他的
{
错误代码=4;
secondNumber=将.ToDecimal转换为(操作数2);
如果(secondNumber=1000000)
{   
错误代码=5;
errorMsg=“第二个数字必须大于0且小于1000000”;
}
其他的
{
错误代码=0;
}
}
}
}
捕获(格式化异常)
{
errorMsg=fe.Message;
}
捕获(溢出例外oe)
{
errorMsg=oe.Message;
}
返回错误码
}
私有void btnCalculate\u单击(对象发送者,事件参数e)
{
十进制第一数;
十进制数;
string mathSymbol=txtOperator.Text;//已经是字符串变量
小数结果=0;
国际误码;
字符串errorMsg;
errorCode=ValidInput(txtOperation1.Text.Trim()、txtOperation2.Text.Trim()、mathSymbol、out firstNumber、out secondNumber out errorMsg);
//如果没有错误
如果(错误代码==0)
{
//调用计算方法
结果=计算(第一个数字、第二个数字、数学符号、结果);
//您可以使用errorCode编号来决定清除哪些字段或提供更有用的消息
}
其他的
{
MessageBox.Show(errorMsg,“ERROR”);
}
}

顺便说一下,在错误消息中,您说的是“1000.000”,但在代码中,您有“100000”

那么您想在单个方法中执行数学运算符firstNumber和secondNumber的验证吗?
private int ValidInput(string operand1, string operand2, string mathSymbol, out decimal firstNumber, out decimal secondNumber out string errorMsg)
{
    int errorCode  ;

    errorMsg = string.Emtpy ;
    firstNumber = 0 ;
    secondNumber = 0 ;

    try 
    {
        if ((mathSymbol != "/") && (mathSymbol != "*") && (mathSymbol != "+") && (mathSymbol != "-"))
        {
            errorCode = 1 ;
            errorMsg = "ERROR invalid operator";
        }   
        else
        {
            errorCode = 2 ;
            firstNumber = Convert.ToDecimal(operand1);

            if (firstNumber <= 0 || firstNumber >= 1000000)
            {
                errorCode = 3 ;
                errorMsg = "first number must be greater than 0 and less than 1,000,000" ;
            }
            else
            {
                errorCode = 4 ;
                secondNumber = Convert.ToDecimal(operand2);

                if (secondNumber <= 0 || secondNumber >= 1000000)
                {   
                    errorCode = 5 ;
                    errorMsg = "second number must be greater than 0 and less than 1,000,000" ;
                }
                else
                {
                    errorCode = 0;
                }
            }

        }
    }
    catch (FormatException  fe)
    {
        errorMsg = fe.Message ;
    }
    catch (OverflowException oe)
    {
        errorMsg = oe.Message ;
    }
    return errorCode
}
private void btnCalculate_Click(object sender, EventArgs e) 
{
    decimal firstNumber ;
    decimal secondNumber ;
    string mathSymbol = txtOperator.Text;   // already a string variable
    decimal result = 0;
    int errorCode ;
            string errorMsg ;

    errorCode = ValidInput(txtOperand1.Text.Trim(), txtOperand2.Text.Trim(), mathSymbol, out firstNumber, out secondNumber out errorMsg) ;

    //if there was no error
    if(errorCode == 0)
    {
        //calls the calculate method
        result = calculate(firstNumber, secondNumber, mathSymbol, result);

        //you can use the errorCode number to decide which fields to clear or provide more usefull message
    }
    else
    {
        MessageBox.Show(errorMsg, "ERROR");
    }
}