尝试... catch:测试if语句是否为true

时间:2015-08-13 06:16:32

标签: c# exception try-catch decimal between

我想使用MAXVALUE方法测试我的小数Add是否小于MINVALUE且大于Try... Catch。如果数字大于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!

1 个答案:

答案 0 :(得分:1)

这取决于您正在使用的语言,但惯例是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(或者调用者无法捕获异常并且程序崩溃),则调用者需要在try {} catch中包含对Add的调用。

相关问题