例如,我有一个方法服务,该服务从源获取一些数据,对这些数据进行处理,然后返回到服务的客户端:
x=np.zeros(10)
y=np.arange(0,10,1)
trace1=go.Scatter(x=x, y=y)
data1=[trace1]
`enter code here`plotly.offline.iplot(data1)
实施的第一行:
DriverProfilerInfoDomain GetDriverProfilerInfo(int id);
,但驱动程序可以为null(从客户端传递无效的ID)。抛出什么异常会更好?我扔了 public DriverProfilerInfoDomain GetDriverProfilerInfo(int id)
{
var driver = (from i in _db.Drivers
where i.Id == id
select ....)
,但可能应该像NullReferenceException
一样?
从文档中:
https://docs.microsoft.com/en-us/dotnet/standard/exceptions/best-practices-for-exceptions
抛出ArgumentException异常或预定义的类之一 如果传递了无效参数,则从ArgumentException派生。
因此,无效的id是无效的参数。但是什么具体类型? ArgumentException
吗?
https://docs.microsoft.com/ru-ru/dotnet/api/system.argumentnullexception?view=netframework-4.7.2
空引用时引发的异常(Visual中没有 基本)传递给不接受为有效方法的方法 论点。
但是传递的参数不为null,在源代码中只是“未找到” ...
有什么想法吗?
答案 0 :(得分:0)
如果您关心呼叫者,则可以通过引发ArgumentException使他们知道发生了什么:
throw new ArgumentException($("{id} is not valid driver id."),"id");
您不需要更具体的类型来表明该参数无效。
ArgumentException
优于NullReferencException
的好处是,对于呼叫者来说,发生的事情更加清楚:
Object reference not set to an instance of an object
没有这个意义
42 is not a valid driver id. Parameter name: id
但是,在许多情况下,仅让NullReferenceException
发生就可以了,而无需自己提出任何异常。当您访问null对象时,运行时将为您引发NullReferenceException。