Try...catch:测试语句是否为真

Try... catch: test if statement is true

我想用 Try... Catch 方法测试我的小数加法是否小于 MAXVALUE 且大于 MINVALUE。如果数字大于 MAXVALUE 或小于 MINVALUE,则代码应抛出异常。

但是我的代码不起作用。

    public static decimal Add(decimal number1, decimal number2)
    {
        decimal Add = number1 + number2;

        try
        {
            Add > RESULT_MAXVALUE;
            Add < RESULT_MINVALUE;
        }

        catch(Exception)
        {
            //Do Stuf
        }
    }

我不想使用 if...else!

这取决于您使用的语言,但约定是 try 块包含可以抛出异常的语句,抛出的异常由 try 之后的 catch() 块捕获。您需要明确抛出异常才能被捕获。

您似乎在使用 C#。考虑阅读 https://msdn.microsoft.com/en-us/library/0yd65esw.aspx 以获取有关 C# 中的 try-catch 语句的更多信息。

在您的案例中可能没有必要使用例外。考虑使用 if 语句,如下所示:

decimal result = a + b;
if ((result > MAX_VALUE) || (result < MIN_VALUE))
{
    // Do stuff.
}

但为了更直接地回答您的问题,以下是使用例外情况的方法:

    decimal result = a + b;
    try
    {
        if ((result > MAX_VALUE) || (result < MIN_VALUE))
        {
            throw new System.ArithmeticException(); // Or make an exception type.
        }
    }
    catch (System.ArithmeticException e)
    {
        // Do stuff.
    }

或者您可能会在 Add 中抛出异常,但不会捕获它。然后调用者有责任处理异常,或者让程序崩溃。看起来像这样:

// Adds two numbers.  Throws a System.ArithmeticException if the result
// is greater than MAX_VALUE or less than MIN_VALUE.
public static decimal Add(decimal a, decimal b)
{
    decimal result = a + b;
    if ((result > MAX_VALUE) || (result < MIN_VALUE))
    {
        throw new System.ArithmeticException(); // Or make an exception type.
    }
}

如果调用者希望某些结果大于 MAX_VALUE 或小于 MIN_VALUE(或者,调用者无法捕获异常,程序会崩溃)。