Skip to content


Provides support for exception filters and fault handlers.

Note: This library predates support for exception filters in C# (using when).


The library is written in IL but can be directly consumed in any .NET language through TryFault and TryFilter<E> static methods that take delegate parameters representing the try, when, catch, and fault blocks.

using static Nuqleon.Runtime.ExceptionServices.Helpers;

TryFault(() => { /* do this */ }, () => { /* fault handler */ });
TryFilter<MyException>(() => { /* do this */}, ex => ex.Bar == 42, ex => { /* exception handler */ })

This library has been used historically to support try...catch...when... and try...fault... in the context of expression trees, even when those are being written to disk using an AssemblyBuilder (using System.Reflection.Emit which lacks proper support for fault handlers). The helper methods in this library can be used as rewrite targets, at the expense of closure allocations.