You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2021/01/22 08:55:44 UTC

[camel] branch master updated: Avoid catching Throwable because it could also catch Java Errors that shouldn't be handled (#4907)

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new ab21765  Avoid catching Throwable because it could also catch Java Errors that shouldn't be handled (#4907)
ab21765 is described below

commit ab217659e3c9013322a5e7793db5dff904dc4c67
Author: Otavio Rodolfo Piske <or...@users.noreply.github.com>
AuthorDate: Fri Jan 22 09:55:20 2021 +0100

    Avoid catching Throwable because it could also catch Java Errors that shouldn't be handled (#4907)
---
 .../java/org/apache/camel/component/activemq/ActiveMQComponent.java | 4 ++--
 .../main/java/org/apache/camel/component/ahc/helper/AhcHelper.java  | 2 +-
 .../src/main/java/org/apache/camel/component/avro/AvroListener.java | 2 +-
 .../src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java | 2 +-
 .../org/apache/camel/component/aws/swf/CamelWorkflowDefinition.java | 4 ++--
 .../java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java     | 2 +-
 .../java/org/apache/camel/component/bean/AbstractBeanProcessor.java | 6 +++---
 .../apache/camel/component/bean/DefaultBeanProcessorFactory.java    | 2 +-
 .../src/main/java/org/apache/camel/component/bean/MethodInfo.java   | 2 +-
 .../main/java/org/apache/camel/language/bean/BeanExpression.java    | 2 +-
 .../org/apache/camel/component/beanstalk/BeanstalkProducer.java     | 4 ++--
 .../java/org/apache/camel/component/cm/CMSenderOneMessageImpl.java  | 2 +-
 .../main/java/org/apache/camel/component/consul/ConsulRegistry.java | 2 +-
 .../camel/component/cxf/common/header/CxfHeaderFilterStrategy.java  | 2 +-
 .../org/apache/camel/component/cxf/transport/CamelDestination.java  | 2 +-
 .../src/main/java/org/apache/camel/component/cxf/CxfConsumer.java   | 2 +-
 .../src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java   | 6 +++---
 .../src/main/java/org/apache/camel/component/cxf/CxfProducer.java   | 2 +-
 .../main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java | 2 +-
 .../java/org/apache/camel/component/directvm/DirectVmProducer.java  | 4 ++--
 20 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java
index 7626ce1..d5ffacc 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java
@@ -225,7 +225,7 @@ public class ActiveMQComponent extends JmsComponent {
         for (Service s : pooledConnectionFactoryServiceList) {
             try {
                 s.stop();
-            } catch (Throwable e) {
+            } catch (Exception e) {
                 // ignore
             }
         }
@@ -234,7 +234,7 @@ public class ActiveMQComponent extends JmsComponent {
         for (SingleConnectionFactory s : singleConnectionFactoryList) {
             try {
                 s.destroy();
-            } catch (Throwable e) {
+            } catch (Exception e) {
                 // ignore
             }
         }
diff --git a/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/helper/AhcHelper.java b/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/helper/AhcHelper.java
index 295044f..cf6b7d9 100644
--- a/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/helper/AhcHelper.java
+++ b/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/helper/AhcHelper.java
@@ -143,7 +143,7 @@ public final class AhcHelper {
                                 "Cannot analyze the Exchange.HTTP_PATH header, due to: cannot find the right HTTP_BASE_URI",
                                 exchange);
                     }
-                } catch (Throwable t) {
+                } catch (Exception t) {
                     throw new RuntimeExchangeException(
                             "Cannot analyze the Exchange.HTTP_PATH header, due to: " + t.getMessage(), exchange, t);
                 }
diff --git a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroListener.java b/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroListener.java
index 05b0414..72d330b 100644
--- a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroListener.java
+++ b/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroListener.java
@@ -185,7 +185,7 @@ public class AvroListener {
 
         try {
             consumer.getProcessor().process(exchange);
-        } catch (Throwable e) {
+        } catch (Exception e) {
             consumer.getExceptionHandler().handleException(e);
         }
 
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java
index cd2afeb..fd74577 100644
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java
+++ b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java
@@ -130,7 +130,7 @@ public class S3Consumer extends ScheduledBatchPollingConsumer {
                 Exchange exchange = getEndpoint().createExchange(s3Object);
                 answer.add(exchange);
             }
-        } catch (Throwable e) {
+        } catch (Exception e) {
             LOG.warn("Error getting S3Object due: {}", e.getMessage(), e);
             // ensure all previous gathered s3 objects are closed
             // if there was an exception creating the exchanges in this batch
diff --git a/components/camel-aws-swf/src/main/java/org/apache/camel/component/aws/swf/CamelWorkflowDefinition.java b/components/camel-aws-swf/src/main/java/org/apache/camel/component/aws/swf/CamelWorkflowDefinition.java
index 7158043..f27fbfb 100644
--- a/components/camel-aws-swf/src/main/java/org/apache/camel/component/aws/swf/CamelWorkflowDefinition.java
+++ b/components/camel-aws-swf/src/main/java/org/apache/camel/component/aws/swf/CamelWorkflowDefinition.java
@@ -100,7 +100,7 @@ public class CamelWorkflowDefinition extends WorkflowDefinition {
             LOGGER.debug("Processing workflow signalReceived");
 
             swfWorkflowConsumer.signalReceived(parameters);
-        } catch (Throwable e) {
+        } catch (Exception e) {
             throwWorkflowException(dataConverter, e);
             throw new IllegalStateException("Unreacheable");
         }
@@ -113,7 +113,7 @@ public class CamelWorkflowDefinition extends WorkflowDefinition {
 
             Object result = swfWorkflowConsumer.getWorkflowState(null);
             return dataConverter.toData(result);
-        } catch (Throwable e) {
+        } catch (Exception e) {
             throwWorkflowException(dataConverter, e);
             throw new IllegalStateException("Unreachable");
         }
diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java
index 6afa9a7..405f941 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java
@@ -195,7 +195,7 @@ public class AWS2S3Consumer extends ScheduledBatchPollingConsumer {
                     IOHelper.close(s3Object);
                 }
             }
-        } catch (Throwable e) {
+        } catch (Exception e) {
             LOG.warn("Error getting S3Object due: {}", e.getMessage(), e);
             // ensure all previous gathered s3 objects are closed
             // if there was an exception creating the exchanges in this batch
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
index a137130..284abba 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
@@ -70,7 +70,7 @@ public abstract class AbstractBeanProcessor extends AsyncProcessorSupport {
                 // fallback and use old way
                 beanInfo = beanHolder.getBeanInfo();
             }
-        } catch (Throwable e) {
+        } catch (Exception e) {
             exchange.setException(e);
             callback.done(true);
             return true;
@@ -105,7 +105,7 @@ public abstract class AbstractBeanProcessor extends AsyncProcessorSupport {
                 }
                 try {
                     target.process(exchange);
-                } catch (Throwable e) {
+                } catch (Exception e) {
                     exchange.setException(e);
                 }
                 callback.done(true);
@@ -123,7 +123,7 @@ public abstract class AbstractBeanProcessor extends AsyncProcessorSupport {
         MethodInvocation invocation;
         try {
             invocation = beanInfo.createInvocation(bean, exchange);
-        } catch (Throwable e) {
+        } catch (Exception e) {
             exchange.setException(e);
             callback.done(true);
             return true;
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java
index 58a657b..e3affca 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java
@@ -123,7 +123,7 @@ public final class DefaultBeanProcessorFactory extends ServiceSupport
                     try {
                         LOG.debug("Attempting to create new bean instance from class: {} via auto-wiring enabled", clazz);
                         bean = CamelContextHelper.newInstance(camelContext, clazz);
-                    } catch (Throwable e) {
+                    } catch (Exception e) {
                         LOG.debug("Error creating new bean instance from class: {}. This exception is ignored", clazz, e);
                     }
                 }
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java
index 1b04d3a..252d4af 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java
@@ -287,7 +287,7 @@ public class MethodInfo {
                     exchange.setException(e.getTargetException());
                     callback.done(true);
                     return true;
-                } catch (Throwable e) {
+                } catch (Exception e) {
                     exchange.setException(e);
                     callback.done(true);
                     return true;
diff --git a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
index 14f666c..21a27d7 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
@@ -360,7 +360,7 @@ public class BeanExpression implements Expression, Predicate {
             if (resultExchange.getException() != null) {
                 exchange.setException(resultExchange.getException());
             }
-        } catch (Throwable e) {
+        } catch (Exception e) {
             throw new RuntimeBeanExpressionException(exchange, beanName, methodName, e);
         }
 
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkProducer.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkProducer.java
index 25ac782..4bc6426 100644
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkProducer.java
+++ b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkProducer.java
@@ -50,7 +50,7 @@ public class BeanstalkProducer extends DefaultAsyncProducer {
     public boolean process(final Exchange exchange, final AsyncCallback callback) {
         try {
             executor.submit(new RunCommand(exchange, callback));
-        } catch (Throwable t) {
+        } catch (Exception t) {
             exchange.setException(t);
             callback.done(true);
             return true;
@@ -110,7 +110,7 @@ public class BeanstalkProducer extends DefaultAsyncProducer {
         public void run() {
             try {
                 doRun();
-            } catch (Throwable t) {
+            } catch (Exception t) {
                 exchange.setException(t);
             } finally {
                 if (callback != null) {
diff --git a/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMSenderOneMessageImpl.java b/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMSenderOneMessageImpl.java
index 063dcd8..25bee7f 100644
--- a/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMSenderOneMessageImpl.java
+++ b/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMSenderOneMessageImpl.java
@@ -251,7 +251,7 @@ public class CMSenderOneMessageImpl implements CMSender {
             }
         } catch (final IOException io) {
             throw new CMDirectException(io);
-        } catch (Throwable t) {
+        } catch (Exception t) {
             if (!(t instanceof CMDirectException)) {
                 // Chain it
                 t = new CMDirectException(t);
diff --git a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulRegistry.java b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulRegistry.java
index 0d7f8f2..49b6276 100644
--- a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulRegistry.java
+++ b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulRegistry.java
@@ -91,7 +91,7 @@ public class ConsulRegistry implements Registry {
         }
         try {
             return type.cast(object);
-        } catch (Throwable e) {
+        } catch (Exception e) {
             String msg = "Found bean: " + name + " in Consul Registry: " + this + " of type: " + object.getClass().getName()
                          + "expected type was: " + type;
             throw new NoSuchBeanException(name, msg, e);
diff --git a/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/common/header/CxfHeaderFilterStrategy.java b/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/common/header/CxfHeaderFilterStrategy.java
index 4658178..2330f00 100644
--- a/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/common/header/CxfHeaderFilterStrategy.java
+++ b/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/common/header/CxfHeaderFilterStrategy.java
@@ -128,7 +128,7 @@ public class CxfHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
 
         try {
             messageHeaderfilter.filter(direction, (List<Header>) value);
-        } catch (Throwable t) {
+        } catch (Exception t) {
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Failed to cast value to Header<List> due to {}", t.toString(), t);
             }
diff --git a/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/CamelDestination.java b/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/CamelDestination.java
index db7fe14..7b8d122 100644
--- a/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/CamelDestination.java
+++ b/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/CamelDestination.java
@@ -192,7 +192,7 @@ public class CamelDestination extends AbstractDestination implements Configurabl
         public void process(Exchange exchange) {
             try {
                 incoming(exchange);
-            } catch (Throwable ex) {
+            } catch (Exception ex) {
                 exchange.setException(ex);
             }
         }
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
index cac8479..58096c7 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
@@ -121,7 +121,7 @@ public class CxfConsumer extends DefaultConsumer implements Suspendable {
     private EndpointReferenceType getReplyTo(Object o) {
         try {
             return (EndpointReferenceType) o.getClass().getMethod("getReplyTo").invoke(o);
-        } catch (Throwable t) {
+        } catch (Exception t) {
             throw new Fault(t);
         }
     }
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
index e431e90..d4cd987 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
@@ -578,7 +578,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
         try {
             Object sf = factoryBean.getClass().getMethod("getServiceFactory").invoke(factoryBean);
             sf.getClass().getMethod("setWrapped", Boolean.TYPE).invoke(sf, wrapped);
-        } catch (Throwable t) {
+        } catch (Exception t) {
             throw new RuntimeException(t);
         }
     }
@@ -1017,7 +1017,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
                 PropertyBindingSupport.bindProperties(getCamelContext(),
                         this,
                         this.properties);
-            } catch (Throwable e) {
+            } catch (Exception e) {
                 // TODO: Why dont't we rethrown this exception
                 LOG.warn("Error setting CamelContext. This exception will be ignored.", e);
             }
@@ -1039,7 +1039,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
                 PropertyBindingSupport.bindProperties(getCamelContext(),
                         this,
                         this.properties);
-            } catch (Throwable e) {
+            } catch (Exception e) {
                 // TODO: Why dont't we rethrown this exception
                 LOG.warn("Error setting properties. This exception will be ignored.", e);
             }
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
index 9dc3928..bc4eada 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
@@ -119,7 +119,7 @@ public class CxfProducer extends DefaultAsyncProducer {
             if (boi.getOperationInfo().isOneWay()) {
                 callback.done(false);
             }
-        } catch (Throwable ex) {
+        } catch (Exception ex) {
             // error occurred before we had a chance to go async
             // so set exception and invoke callback true
             camelExchange.setException(ex);
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
index f54b8c9..cd90b79 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
@@ -964,7 +964,7 @@ public class DefaultCxfBinding implements CxfBinding, HeaderFilterStrategyAware
     private static String getXMLString(Element el) {
         try {
             return StaxUtils.toString(el);
-        } catch (Throwable t) {
+        } catch (Exception t) {
             //ignore
         }
         return "unknown content";
diff --git a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
index 568eef7..9b31181 100644
--- a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
+++ b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
@@ -91,14 +91,14 @@ public class DirectVmProducer extends DefaultAsyncProducer {
                     if (endpoint.isPropagateProperties()) {
                         exchange.getProperties().putAll(submitted.getProperties());
                     }
-                } catch (Throwable e) {
+                } catch (Exception e) {
                     exchange.setException(e);
                 } finally {
                     callback.done(done);
                 }
             });
 
-        } catch (Throwable e) {
+        } catch (Exception e) {
             exchange.setException(e);
         }