应该为无效ID抛出什么异常?

Jez*_*Jez 1 .net c# asp.net error-handling exception

我正在构建一个应用程序服务层,我的一个方法接受实体的ID(整数)并返回引用的实体.虽然看起来应该很简单,但是通过大量的.NET异常,我不完全确定如果找不到具有给定ID的实体我应该抛出什么异常(我不想只返回null) .

ObjectNotFoundException,但是在System.Data命名空间中,这意味着它应该是特定于ASP.NET的,而这不是.有NullReferenceException,但是建议程序员不要因为它是"内部"而抛出它,而且我不确定它在这种情况下是否完全正确.我不想抛出通用的Exception.那么,什么特定的异常类最有意义扔到这里?由于这是一个应用服务层方法(因此非常抽象),我是否应该将自己限制在System.SystemException命名空间和/或自定义异常中的异常?

Jus*_*ner 6

首先,System.DataADO.NET是特定的,而不是ASP.NET特定的.

其次,如果您选择不使用ObjectNotFoundException,那么总会ArgumentException允许您执行以下操作:

throw new ArgumentException("Given Id not found.", "id");
Run Code Online (Sandbox Code Playgroud)