PostSharpAPI ReferencePost­Sharp.​AspectsOn­Exception­Aspect
Open sandboxFocus

OnExceptionAspect Class

Aspect that, when applied to a method, defines an exception handler around the whole method and calls a custom method in this exception handler.

Namespace: PostSharp.Aspects
Assembly: PostSharp.dll
public abstract class OnExceptionAspect : MethodLevelAspect, IMethodLevelAspectBuildSemantics, IAspectBuildSemantics, IValidableAnnotation, IOnExceptionAspect, IMethodLevelAspect, IAspect

The OnExceptionAspect aspect adds an exception handler to the method to which it is applied. It allows you to easily encapsulate exception handling policies as a custom attribute.

The most important method is OnException(MethodExecutionArgs). It is the exception handler in itself.

The current exception is available from the Exception property of the MethodExecutionArgs object. This property is read-only. If you need to replace the current exception by another one, you should throw a new exception from the handler. If you need to ignore the exception, set the FlowBehavior property to Continue.

An object of type MethodExecutionArgs is passed to every advice of this aspect. This object allows you to:


All classes implementing IAspect should typically be marked as serializable using the SerializableAttribute or PSerializableAttribute custom attribute . Fields that are only used at runtime (and unknown at compile-time) should be carefully marked with the NonSerializedAttribute or PNonSerializedAttribute custom attribute. When PostSharp is used on a platform that does not support aspect serialization (such as .NET Compact Framework, Silverlight, or Windows Phone), or when another aspect serializer is used, it is not necessary to mark the aspect class as serializable. For more information, see Understanding Aspect Serialization .

Understanding Aspect Serialization


Name Description


Name Description

Determines which target methods will be advised semantically. This affects the behavior of the aspect when it's applied to iterator or async methods, which are compiled into state machines.


Specifies the action to take when the aspect is applied to an unsupported target method.


Name Description

Method invoked at build time to create a concrete AspectConfiguration instance specifically for the current Aspect type.


Gets the type of exception handled by this aspect.


Method executed after the body of methods to which this aspect is applied, in case that the method failed with an exception (i.e., in a catch block).

SetAspectConfiguration(AspectConfiguration, MethodBase)

Method invoked at build time to set up an AspectConfiguration object according to the current Aspect instance and a specified target element of the current aspect.

See Also