From 34b97af161c34a5a43d4277a117a7c6d6a8789b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Emmanuel=20Beno=C3=AEt?= <tseeker@nocternity.net>
Date: Thu, 17 Sep 2015 09:42:23 +0200
Subject: [PATCH] Throwing functions let VM errors pass through

VM errors ought to be rethrown without being wrapped inside a
FunctionException.
---
 src/main/java/info/ebenoit/ebul/func/ThrowingBiConsumer.java    | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingBiFunction.java    | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingBiPredicate.java   | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingBinaryOperator.java     | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingBooleanSupplier.java    | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingConsumer.java      | 2 +-
 .../info/ebenoit/ebul/func/ThrowingDoubleBinaryOperator.java    | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingDoubleConsumer.java     | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingDoubleFunction.java     | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingDoublePredicate.java    | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingDoubleSupplier.java     | 2 +-
 .../info/ebenoit/ebul/func/ThrowingDoubleToFloatFunction.java   | 2 +-
 .../info/ebenoit/ebul/func/ThrowingDoubleToIntFunction.java     | 2 +-
 .../info/ebenoit/ebul/func/ThrowingDoubleToLongFunction.java    | 2 +-
 .../info/ebenoit/ebul/func/ThrowingDoubleUnaryOperator.java     | 2 +-
 .../info/ebenoit/ebul/func/ThrowingFloatBinaryOperator.java     | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingFloatConsumer.java | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingFloatFunction.java | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingFloatPredicate.java     | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingFloatSupplier.java | 2 +-
 .../info/ebenoit/ebul/func/ThrowingFloatToDoubleFunction.java   | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingFloatToIntFunction.java | 2 +-
 .../info/ebenoit/ebul/func/ThrowingFloatToLongFunction.java     | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingFloatUnaryOperator.java | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingFunction.java      | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingIntBinaryOperator.java  | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingIntConsumer.java   | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingIntFunction.java   | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingIntPredicate.java  | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingIntSupplier.java   | 2 +-
 .../info/ebenoit/ebul/func/ThrowingIntToDoubleFunction.java     | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingIntToFloatFunction.java | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingIntToLongFunction.java  | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingIntUnaryOperator.java   | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingLongBinaryOperator.java | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingLongConsumer.java  | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingLongFunction.java  | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingLongPredicate.java | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingLongSupplier.java  | 2 +-
 .../info/ebenoit/ebul/func/ThrowingLongToDoubleFunction.java    | 2 +-
 .../info/ebenoit/ebul/func/ThrowingLongToFloatFunction.java     | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingLongToIntFunction.java  | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingLongUnaryOperator.java  | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingObjDoubleConsumer.java  | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingObjFloatConsumer.java   | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingObjIntConsumer.java     | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingObjLongConsumer.java    | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingPredicate.java     | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingRunnable.java      | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingSupplier.java      | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingToDoubleBiFunction.java | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingToDoubleFunction.java   | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingToFloatBiFunction.java  | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingToFloatFunction.java    | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingToIntBiFunction.java    | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingToIntFunction.java | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingToLongBiFunction.java   | 2 +-
 .../java/info/ebenoit/ebul/func/ThrowingToLongFunction.java     | 2 +-
 src/main/java/info/ebenoit/ebul/func/ThrowingUnaryOperator.java | 2 +-
 59 files changed, 59 insertions(+), 59 deletions(-)

diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingBiConsumer.java b/src/main/java/info/ebenoit/ebul/func/ThrowingBiConsumer.java
index a49da48..4756a7b 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingBiConsumer.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingBiConsumer.java
@@ -32,7 +32,7 @@ public interface ThrowingBiConsumer< T , U >
 	{
 		try {
 			this.throwingAccept( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingBiFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingBiFunction.java
index 0257d95..8c7743c 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingBiFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingBiFunction.java
@@ -32,7 +32,7 @@ public interface ThrowingBiFunction< T , U , R >
 	{
 		try {
 			return this.throwingApply( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingBiPredicate.java b/src/main/java/info/ebenoit/ebul/func/ThrowingBiPredicate.java
index 7ec0bae..fcfe5a7 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingBiPredicate.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingBiPredicate.java
@@ -32,7 +32,7 @@ public interface ThrowingBiPredicate< T , U >
 	{
 		try {
 			return this.throwingTest( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingBinaryOperator.java b/src/main/java/info/ebenoit/ebul/func/ThrowingBinaryOperator.java
index 4232902..31f9170 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingBinaryOperator.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingBinaryOperator.java
@@ -31,7 +31,7 @@ public interface ThrowingBinaryOperator< T >
 	{
 		try {
 			return this.throwingApply( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingBooleanSupplier.java b/src/main/java/info/ebenoit/ebul/func/ThrowingBooleanSupplier.java
index 12a6381..78bbef9 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingBooleanSupplier.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingBooleanSupplier.java
@@ -28,7 +28,7 @@ public interface ThrowingBooleanSupplier
 	{
 		try {
 			return this.throwingGetAsBoolean( );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingConsumer.java b/src/main/java/info/ebenoit/ebul/func/ThrowingConsumer.java
index 3b4a5ba..da00cc4 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingConsumer.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingConsumer.java
@@ -30,7 +30,7 @@ public interface ThrowingConsumer< T >
 	{
 		try {
 			this.throwingAccept( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleBinaryOperator.java b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleBinaryOperator.java
index f0f3ebe..2001c7c 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleBinaryOperator.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleBinaryOperator.java
@@ -32,7 +32,7 @@ public interface ThrowingDoubleBinaryOperator
 	{
 		try {
 			return this.throwingApplyAsDouble( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleConsumer.java b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleConsumer.java
index 4a78ee7..77d3442 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleConsumer.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleConsumer.java
@@ -29,7 +29,7 @@ public interface ThrowingDoubleConsumer
 	{
 		try {
 			this.throwingAccept( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleFunction.java
index 59e5be1..2929514 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingDoubleFunction< R >
 	{
 		try {
 			return this.throwingApply( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingDoublePredicate.java b/src/main/java/info/ebenoit/ebul/func/ThrowingDoublePredicate.java
index c271026..e7ab963 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingDoublePredicate.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingDoublePredicate.java
@@ -30,7 +30,7 @@ public interface ThrowingDoublePredicate
 	{
 		try {
 			return this.throwingTest( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleSupplier.java b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleSupplier.java
index 9e7c72e..d19ec95 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleSupplier.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleSupplier.java
@@ -28,7 +28,7 @@ public interface ThrowingDoubleSupplier
 	{
 		try {
 			return this.throwingGetAsDouble( );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToFloatFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToFloatFunction.java
index 8ccfdb4..fe97ed9 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToFloatFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToFloatFunction.java
@@ -26,7 +26,7 @@ public interface ThrowingDoubleToFloatFunction
 	{
 		try {
 			return this.throwingApplyAsFloat( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToIntFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToIntFunction.java
index 5c28af1..eb396ff 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToIntFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToIntFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingDoubleToIntFunction
 	{
 		try {
 			return this.throwingApplyAsInt( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToLongFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToLongFunction.java
index 21f4231..b854500 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToLongFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleToLongFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingDoubleToLongFunction
 	{
 		try {
 			return this.throwingApplyAsLong( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleUnaryOperator.java b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleUnaryOperator.java
index 62b94df..bddf70d 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleUnaryOperator.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingDoubleUnaryOperator.java
@@ -30,7 +30,7 @@ public interface ThrowingDoubleUnaryOperator
 	{
 		try {
 			return this.throwingApplyAsDouble( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatBinaryOperator.java b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatBinaryOperator.java
index af54cbf..c6e391d 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatBinaryOperator.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatBinaryOperator.java
@@ -28,7 +28,7 @@ public interface ThrowingFloatBinaryOperator
 	{
 		try {
 			return this.throwingApplyAsFloat( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatConsumer.java b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatConsumer.java
index 567d70e..9606933 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatConsumer.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatConsumer.java
@@ -25,7 +25,7 @@ public interface ThrowingFloatConsumer
 	{
 		try {
 			this.throwingAccept( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatFunction.java
index f794411..d8a28d5 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatFunction.java
@@ -26,7 +26,7 @@ public interface ThrowingFloatFunction< R >
 	{
 		try {
 			return this.throwingApply( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatPredicate.java b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatPredicate.java
index d1cc7fd..b8feb8d 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatPredicate.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatPredicate.java
@@ -26,7 +26,7 @@ public interface ThrowingFloatPredicate
 	{
 		try {
 			return this.throwingTest( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatSupplier.java b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatSupplier.java
index 87e007a..e48352a 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatSupplier.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatSupplier.java
@@ -24,7 +24,7 @@ public interface ThrowingFloatSupplier
 	{
 		try {
 			return this.throwingGetAsFloat( );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToDoubleFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToDoubleFunction.java
index d3fd09b..e3278f7 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToDoubleFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToDoubleFunction.java
@@ -26,7 +26,7 @@ public interface ThrowingFloatToDoubleFunction
 	{
 		try {
 			return this.throwingApplyAsDouble( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToIntFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToIntFunction.java
index 23bef4d..ff914f1 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToIntFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToIntFunction.java
@@ -26,7 +26,7 @@ public interface ThrowingFloatToIntFunction
 	{
 		try {
 			return this.throwingApplyAsInt( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToLongFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToLongFunction.java
index 0be27c2..a3ca0f4 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToLongFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatToLongFunction.java
@@ -26,7 +26,7 @@ public interface ThrowingFloatToLongFunction
 	{
 		try {
 			return this.throwingApplyAsLong( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatUnaryOperator.java b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatUnaryOperator.java
index b1aab6e..49aeff5 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingFloatUnaryOperator.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingFloatUnaryOperator.java
@@ -26,7 +26,7 @@ public interface ThrowingFloatUnaryOperator
 	{
 		try {
 			return this.throwingApplyAsFloat( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingFunction.java
index d0a0c2f..f8e9c37 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingFunction< T , R >
 	{
 		try {
 			return this.throwingApply( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingIntBinaryOperator.java b/src/main/java/info/ebenoit/ebul/func/ThrowingIntBinaryOperator.java
index 6ca0fa9..2bfde0a 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingIntBinaryOperator.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingIntBinaryOperator.java
@@ -32,7 +32,7 @@ public interface ThrowingIntBinaryOperator
 	{
 		try {
 			return this.throwingApplyAsInt( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingIntConsumer.java b/src/main/java/info/ebenoit/ebul/func/ThrowingIntConsumer.java
index d48e684..f28f790 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingIntConsumer.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingIntConsumer.java
@@ -29,7 +29,7 @@ public interface ThrowingIntConsumer
 	{
 		try {
 			this.throwingAccept( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingIntFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingIntFunction.java
index 1c685f4..5ae644d 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingIntFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingIntFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingIntFunction< R >
 	{
 		try {
 			return this.throwingApply( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingIntPredicate.java b/src/main/java/info/ebenoit/ebul/func/ThrowingIntPredicate.java
index e08ed98..ca4bb9b 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingIntPredicate.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingIntPredicate.java
@@ -30,7 +30,7 @@ public interface ThrowingIntPredicate
 	{
 		try {
 			return this.throwingTest( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingIntSupplier.java b/src/main/java/info/ebenoit/ebul/func/ThrowingIntSupplier.java
index e535512..a1fd499 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingIntSupplier.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingIntSupplier.java
@@ -28,7 +28,7 @@ public interface ThrowingIntSupplier
 	{
 		try {
 			return this.throwingGetAsInt( );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingIntToDoubleFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingIntToDoubleFunction.java
index e2b23bc..9a8bde1 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingIntToDoubleFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingIntToDoubleFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingIntToDoubleFunction
 	{
 		try {
 			return this.throwingApplyAsDouble( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingIntToFloatFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingIntToFloatFunction.java
index 987b1a9..dc71546 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingIntToFloatFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingIntToFloatFunction.java
@@ -26,7 +26,7 @@ public interface ThrowingIntToFloatFunction
 	{
 		try {
 			return this.throwingApplyAsFloat( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingIntToLongFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingIntToLongFunction.java
index be08657..4d8defa 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingIntToLongFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingIntToLongFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingIntToLongFunction
 	{
 		try {
 			return this.throwingApplyAsLong( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingIntUnaryOperator.java b/src/main/java/info/ebenoit/ebul/func/ThrowingIntUnaryOperator.java
index 7526564..40264ea 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingIntUnaryOperator.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingIntUnaryOperator.java
@@ -30,7 +30,7 @@ public interface ThrowingIntUnaryOperator
 	{
 		try {
 			return this.throwingApplyAsInt( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingLongBinaryOperator.java b/src/main/java/info/ebenoit/ebul/func/ThrowingLongBinaryOperator.java
index 77ba432..052748f 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingLongBinaryOperator.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingLongBinaryOperator.java
@@ -32,7 +32,7 @@ public interface ThrowingLongBinaryOperator
 	{
 		try {
 			return this.throwingApplyAsLong( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingLongConsumer.java b/src/main/java/info/ebenoit/ebul/func/ThrowingLongConsumer.java
index 5c6aaf9..9038235 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingLongConsumer.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingLongConsumer.java
@@ -29,7 +29,7 @@ public interface ThrowingLongConsumer
 	{
 		try {
 			this.throwingAccept( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingLongFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingLongFunction.java
index a0d6f71..0b8677a 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingLongFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingLongFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingLongFunction< R >
 	{
 		try {
 			return this.throwingApply( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingLongPredicate.java b/src/main/java/info/ebenoit/ebul/func/ThrowingLongPredicate.java
index c9718b3..000cb37 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingLongPredicate.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingLongPredicate.java
@@ -30,7 +30,7 @@ public interface ThrowingLongPredicate
 	{
 		try {
 			return this.throwingTest( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingLongSupplier.java b/src/main/java/info/ebenoit/ebul/func/ThrowingLongSupplier.java
index fdb37ca..95f6df8 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingLongSupplier.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingLongSupplier.java
@@ -28,7 +28,7 @@ public interface ThrowingLongSupplier
 	{
 		try {
 			return this.throwingGetAsLong( );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingLongToDoubleFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingLongToDoubleFunction.java
index c7ce6cc..689ddc7 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingLongToDoubleFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingLongToDoubleFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingLongToDoubleFunction
 	{
 		try {
 			return this.throwingApplyAsDouble( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingLongToFloatFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingLongToFloatFunction.java
index 0a2b87a..6c9ceb8 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingLongToFloatFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingLongToFloatFunction.java
@@ -26,7 +26,7 @@ public interface ThrowingLongToFloatFunction
 	{
 		try {
 			return this.throwingApplyAsFloat( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingLongToIntFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingLongToIntFunction.java
index 55208b7..615d395 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingLongToIntFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingLongToIntFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingLongToIntFunction
 	{
 		try {
 			return this.throwingApplyAsInt( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingLongUnaryOperator.java b/src/main/java/info/ebenoit/ebul/func/ThrowingLongUnaryOperator.java
index 70f67d8..5513432 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingLongUnaryOperator.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingLongUnaryOperator.java
@@ -30,7 +30,7 @@ public interface ThrowingLongUnaryOperator
 	{
 		try {
 			return this.throwingApplyAsLong( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingObjDoubleConsumer.java b/src/main/java/info/ebenoit/ebul/func/ThrowingObjDoubleConsumer.java
index 8ed28f5..6cd601a 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingObjDoubleConsumer.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingObjDoubleConsumer.java
@@ -32,7 +32,7 @@ public interface ThrowingObjDoubleConsumer< T >
 	{
 		try {
 			this.throwingAccept( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingObjFloatConsumer.java b/src/main/java/info/ebenoit/ebul/func/ThrowingObjFloatConsumer.java
index da5c61a..fcf8f3f 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingObjFloatConsumer.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingObjFloatConsumer.java
@@ -28,7 +28,7 @@ public interface ThrowingObjFloatConsumer< T >
 	{
 		try {
 			this.throwingAccept( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingObjIntConsumer.java b/src/main/java/info/ebenoit/ebul/func/ThrowingObjIntConsumer.java
index 4909b52..7d12697 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingObjIntConsumer.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingObjIntConsumer.java
@@ -32,7 +32,7 @@ public interface ThrowingObjIntConsumer< T >
 	{
 		try {
 			this.throwingAccept( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingObjLongConsumer.java b/src/main/java/info/ebenoit/ebul/func/ThrowingObjLongConsumer.java
index 00fa7ac..ffe8f18 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingObjLongConsumer.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingObjLongConsumer.java
@@ -32,7 +32,7 @@ public interface ThrowingObjLongConsumer< T >
 	{
 		try {
 			this.throwingAccept( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingPredicate.java b/src/main/java/info/ebenoit/ebul/func/ThrowingPredicate.java
index d8d548c..574467c 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingPredicate.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingPredicate.java
@@ -30,7 +30,7 @@ public interface ThrowingPredicate< T >
 	{
 		try {
 			return this.throwingTest( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingRunnable.java b/src/main/java/info/ebenoit/ebul/func/ThrowingRunnable.java
index d84cc90..3eae77e 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingRunnable.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingRunnable.java
@@ -23,7 +23,7 @@ public interface ThrowingRunnable
 	{
 		try {
 			this.throwingRun( );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingSupplier.java b/src/main/java/info/ebenoit/ebul/func/ThrowingSupplier.java
index e91e310..b61bcdb 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingSupplier.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingSupplier.java
@@ -28,7 +28,7 @@ public interface ThrowingSupplier< T >
 	{
 		try {
 			return this.throwingGet( );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingToDoubleBiFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingToDoubleBiFunction.java
index 360446c..ffd1680 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingToDoubleBiFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingToDoubleBiFunction.java
@@ -32,7 +32,7 @@ public interface ThrowingToDoubleBiFunction< T , U >
 	{
 		try {
 			return this.throwingApplyAsDouble( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingToDoubleFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingToDoubleFunction.java
index bec2de8..1c6da72 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingToDoubleFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingToDoubleFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingToDoubleFunction< T >
 	{
 		try {
 			return this.throwingApplyAsDouble( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingToFloatBiFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingToFloatBiFunction.java
index 6149e89..f1c7087 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingToFloatBiFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingToFloatBiFunction.java
@@ -28,7 +28,7 @@ public interface ThrowingToFloatBiFunction< T , U >
 	{
 		try {
 			return this.throwingApplyAsFloat( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingToFloatFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingToFloatFunction.java
index b5b93a9..ba4571b 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingToFloatFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingToFloatFunction.java
@@ -26,7 +26,7 @@ public interface ThrowingToFloatFunction< T >
 	{
 		try {
 			return this.throwingApplyAsFloat( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingToIntBiFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingToIntBiFunction.java
index b79f94f..c126435 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingToIntBiFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingToIntBiFunction.java
@@ -32,7 +32,7 @@ public interface ThrowingToIntBiFunction< T , U >
 	{
 		try {
 			return this.throwingApplyAsInt( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingToIntFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingToIntFunction.java
index a2b9c4c..a3414e6 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingToIntFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingToIntFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingToIntFunction< T >
 	{
 		try {
 			return this.throwingApplyAsInt( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingToLongBiFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingToLongBiFunction.java
index d692d29..97710b0 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingToLongBiFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingToLongBiFunction.java
@@ -32,7 +32,7 @@ public interface ThrowingToLongBiFunction< T , U >
 	{
 		try {
 			return this.throwingApplyAsLong( t , u );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingToLongFunction.java b/src/main/java/info/ebenoit/ebul/func/ThrowingToLongFunction.java
index f671c63..0c239e9 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingToLongFunction.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingToLongFunction.java
@@ -30,7 +30,7 @@ public interface ThrowingToLongFunction< T >
 	{
 		try {
 			return this.throwingApplyAsLong( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );
diff --git a/src/main/java/info/ebenoit/ebul/func/ThrowingUnaryOperator.java b/src/main/java/info/ebenoit/ebul/func/ThrowingUnaryOperator.java
index 4034a30..cda6876 100644
--- a/src/main/java/info/ebenoit/ebul/func/ThrowingUnaryOperator.java
+++ b/src/main/java/info/ebenoit/ebul/func/ThrowingUnaryOperator.java
@@ -30,7 +30,7 @@ public interface ThrowingUnaryOperator< T >
 	{
 		try {
 			return this.throwingApply( t );
-		} catch ( final RuntimeException e ) {
+		} catch ( final Error | RuntimeException e ) {
 			throw e;
 		} catch ( final Throwable e ) {
 			throw new FunctionException( e );