[
https://issues.apache.org/jira/browse/FELIX-5639?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Guillaume Nodet closed FELIX-5639.
----------------------------------
Resolution: Duplicate
> Error thrown by Function gets gobbled up
> ----------------------------------------
>
> Key: FELIX-5639
> URL: https://issues.apache.org/jira/browse/FELIX-5639
> Project: Felix
> Issue Type: Bug
> Components: Gogo Runtime
> Reporter: Jason Dillon
>
> Appears that if a registered function throws an java.lang.Error that
> something in gogo eats the throwable.
> I hacked in a "error" function into the processor to help show this:
> {noformat}
> diff --git
> a/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java
>
> b/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java
> index 451a1c8f0..b227d72c5 100644
> ---
> a/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java
> +++
> b/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProcessorImpl.java
> @@ -23,6 +23,7 @@ import java.io.OutputStream;
> import java.lang.reflect.Method;
> import java.util.Collections;
> import java.util.LinkedHashMap;
> +import java.util.List;
> import java.util.Map;
> import java.util.Map.Entry;
> import java.util.Set;
> @@ -147,6 +148,18 @@ public class CommandProcessorImpl implements
> CommandProcessor
> String cfunction = name.substring(colon);
> boolean anyScope = (colon == 1 && name.charAt(0) == '*');
>
> + // HACK: testing errors
> + System.out.println("NAME: " + name);
> + if (name.equals("*:error")) {
> + return new Function() {
> + @Override
> + public Object execute(CommandSession session, List<Object>
> arguments) throws Exception {
> + System.out.println("THROWING ERROR");
> + throw new Error("OOPS");
> + }
> + };
> + }
> +
> Map<Object, Integer> cmdMap = commands.get(name);
>
> if (null == cmdMap && anyScope)
> {noformat}
> And then using the jline3 demo program tested:
> {noformat}
> g! error
>
>
> 14:27:05
> NAME: *:error
> THROWING ERROR
> g!
> {noformat}
> After a quick chat with gnodet he mentioned perhaps:
> {quote}
> I think the swallowing happens here:
>
> https://github.com/apache/felix/blob/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandSessionImpl.java#L763-L769
> However, I think the real place where the exception is thrown is there:
>
> https://github.com/apache/felix/blob/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandSessionImpl.java#L825
> where ExecutionException should be caught and turned into a Result I think.
> {quote}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)