无效属性或属性参数应抛出什么异常?

4
我正在使用自定义属性将元数据附加到类方法。在运行时,这些属性及其参数将被验证。如果属性(或属性参数)无效,是否有共识应该抛出哪个现有的异常类?
例如,给定一个以实例方法名称作为构造函数参数的属性:
public class StateAttribute : Attribute {
    public string ParentState { get; set; }
    public StateAttribute() {}
}

当在类中使用时:

public StateMachine {
   [State]
   public Result TopState(Event e) { ... }

   [State( ParentState = "TopState" )]
   public Result NestedState(Event e) { ... }
}

一个初始化程序将遍历所有已应用State属性的方法,并将ParentState名称解析为实际的MethodInfo。如果(例如由于拼写错误)找不到该名称的方法,则需要抛出异常。由于我不想发明新的异常类,你会建议使用哪个异常类?

而且只是为了确保,在编译时没有验证方法名称的方法,对吗?

1个回答

1

InvalidOperationException 是我个人在“出现错误”时使用的通用异常。

但是说实话,这听起来像是一个派生自己的异常的完美案例。


1
是的,自定义异常可能是正确的选择。我的困境在于,这有点像在运行时检测到的编译时错误... - Daniel Gehriger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接