我想使用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!
答案 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的调用。