缺少自定义属性时选择正确的异常类型

Str*_*ger 3 .net exception custom-attributes

我在选择正确的异常类型时遇到一些麻烦时遇到了一些麻烦(我更喜欢现有的 .NET 异常之一)。

在这种情况下你有什么建议?提前致谢。

编辑:

这是他的背景:

[<ExpectedAttribute()>]
let foo args ... = ...
Run Code Online (Sandbox Code Playgroud)

该函数foo(用户定义的)被传递到运行时引擎。如果自定义属性不存在,运行时必须抛出异常。

Hen*_*man 5

如果缺少自定义属性,则不会出现异常System

您可以使用系统例外,但是您的域是什么?什么样的合同被破坏了?如果这是关于序列化或测试或......这很重要


添加后进行编辑foo:最接近的系统异常是 System.ArgumentException ,因为您的引擎收到的参数不符合其要求。

但我会定义我自己的MissingExpectedAttribute例外。