什么时候是系统.ArgumentException抛出
本文关键字:抛出 ArgumentException 系统 什么时候 | 更新日期: 2023-09-27 18:07:50
想象下面的错误:
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*/ }
}
通常情况下,我会在调试器中手动生成此异常,但如果我硬编码它发生,那么它就不会编译,我不知道最终用户正在做什么来导致此异常。但是我可以在事件日志中看到它。
根据MSDN:
当提供给类的参数之一时引发的异常方法无效。
例如,假设我们有以下类
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
。