究竟是什么时候抛出System.ArgumentException?

时间:2015-08-12 18:52:00

标签: c# .net object exception methods

想象一下以下错误:

SomeObject.someMethod failed with System.ArgumentException: Requested value 'someArgument' was not found.

这是否意味着情况如下:

new SomeObject().someMethod(invalid arguments);

或者这个:

public class SomeObject
{
    public SomeObject() { }
    public void someMethod(Argument someArgument) { someOtherMethod(invalid arguments); }
    private void someOtherMethod(Argument someArgument) { /*do something*/ }
}

通常情况下,我只是在调试器中手动生成此异常,但如果我对其进行硬编码,那么它就不会编译,我不知道最终用户正在做什么导致此异常。但我可以在事件日志中看到它发生。

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

根据MSDN

  

当其中一个参数提供给a时抛出的异常   方法无效。

例如,让我们有以下类

public class Account
{
    public decimal Amount { get; set; }

    public Account(decimal amount)
    {
        Amount = amount;
    }

    public decimal CalculateTax(decimal taxAmount)
    {
        if(taxAmount>0.8*Amount)
            throw new ArgumentException("The taxAmount should be less than 80% of Amount", "percentage");

        return Amount-taxAmount;
    }
}

现在我们创建一个Account对象:

var account = new Account(1000M);

如果我们将CalculateTax称为taxAmount 900M,则会引发ArgumentException