Index: libcfa/src/exception.hfa
===================================================================
--- libcfa/src/exception.hfa	(revision 69c5c001921edf7a77ff0c53ac4f0d0e8044b405)
+++ libcfa/src/exception.hfa	(revision 9b0c3ec5a87c40b085a2ec3ed4be75524987f899)
@@ -125,4 +125,13 @@
 #define VTABLE_ASSERTION(exception_name, parameters) \
 	{ VTABLE_TYPE(exception_name) parameters VTABLE_NAME(exception_name); }
+
+// IS_EXCEPTION(exception_name [, (...parameters)])
+// IS_RESUMPTION_EXCEPTION(exception_name [, (parameters...)])
+// IS_TERMINATION_EXCEPTION(exception_name [, (parameters...)])
+// Create an assertion that exception_name, possibly with the qualifing parameters, is the given
+// kind of exception with the standard vtable with the same parameters if applicable.
+#define IS_EXCEPTION(...) _IS_EXCEPTION(is_exception, __VA_ARGS__, , ~)
+#define IS_RESUMPTION_EXCEPTION(...) _IS_EXCEPTION(is_resumption_exception, __VA_ARGS__, , ~)
+#define IS_TERMINATION_EXCEPTION(...) _IS_EXCEPTION(is_termination_exception, __VA_ARGS__, , ~)
 
 // All internal helper macros begin with an underscore.
@@ -234,2 +243,5 @@
 		_GLUE2(exception_name,_copy), ^?{}, \
 		_CLOSE
+
+#define _IS_EXCEPTION(kind, exception_name, parameters, ...) \
+	kind(exception_name parameters, VTABLE_TYPE(exception_name) parameters)
