使用属性处理类库中的异常



在类库中,我正在尝试处理类库中属性的异常。有没有办法没有AOP(PostSharp)?

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class HandleError : Attribute
{
    public void OnException(){
    try {
    }
    catch (Exception) {
    }}
}

我想像这样装饰属性。

[HandleError]
public void SampleMethod()
{
  throw new Exception();
}

简单地说,你不能轻易。您可以使用其他库中的 AOP(例如 Spring.NET)。唯一的区别是 Spring.NET 运行时工作,而Postsharp在编译时工作。

你甚至可以使用Fody在编译时进行一些代码重写,比如PostSharp。

请注意,如果您只想对异常进行一些日志记录,并且不需要从堆栈中删除异常(您不想"吃掉"它或更改它),那么您可以简单地添加一个 FirstChanceException 处理程序。请注意,这会减慢所有内容的速度,因为您需要使用反射来检查属性是否存在。如果你想走堆栈,它会变得更慢!(而且要复杂得多)

最新更新