我正在研究使用PostSharp,尝试编写一些演示。其中之一是一个方面,将记录异常,另一个是检查空参数并在遇到时抛出异常。
问题在于,我希望我的异常日志方面记录由空值检查方面引发的异常,但似乎无法正常工作。有人知道如何使其正常工作吗?
编辑:需要明确的是,异常记录器可以处理在方面外部引发的异常,但无法记录NullCheckAttribute引发的异常。
以下是空值检查方面的代码:
问题在于,我希望我的异常日志方面记录由空值检查方面引发的异常,但似乎无法正常工作。有人知道如何使其正常工作吗?
编辑:需要明确的是,异常记录器可以处理在方面外部引发的异常,但无法记录NullCheckAttribute引发的异常。
以下是空值检查方面的代码:
[Serializable]
public class NullCheckAttribute : OnMethodBoundaryAspect
{
[ExceptionLogger]
public override void OnEntry(MethodExecutionArgs args)
{
foreach (var argument in args.Arguments)
{
if (argument == null)
throw new InvalidOperationException("Null argument in " + args.Method.Name);
}
}
}
以下是异常记录器的代码
[Serializable]
public class ExceptionLoggerAttribute : OnMethodBoundaryAspect
{
public override void OnException(MethodExecutionArgs args)
{
Console.WriteLine("Exception thrown in " + args.Method.Name);
Console.WriteLine("***Message: " + args.Exception.Message);
Console.WriteLine("***Stack trace: " + args.Exception.StackTrace);
}
}
我还应该说明的是,我只是使用了免费许可证。
NullCheckAttribute
以查看MethodExecutionArgs
是否确实为空吗? - Hossain Muctadir