From 317e9d69addb87086eacff5e749997b9755697ee Mon Sep 17 00:00:00 2001 From: hengyunabc Date: Fri, 8 Feb 2019 01:39:23 +0800 Subject: [PATCH] catch completion exception --- .../core/shell/term/impl/CompletionHandler.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/taobao/arthas/core/shell/term/impl/CompletionHandler.java b/core/src/main/java/com/taobao/arthas/core/shell/term/impl/CompletionHandler.java index 1323d04ac..8c3205c8d 100644 --- a/core/src/main/java/com/taobao/arthas/core/shell/term/impl/CompletionHandler.java +++ b/core/src/main/java/com/taobao/arthas/core/shell/term/impl/CompletionHandler.java @@ -4,6 +4,9 @@ import com.taobao.arthas.core.shell.cli.CliToken; import com.taobao.arthas.core.shell.cli.CliTokens; import com.taobao.arthas.core.shell.handlers.Handler; import com.taobao.arthas.core.shell.session.Session; +import com.taobao.arthas.core.util.LogUtil; +import com.taobao.middleware.logger.Logger; + import io.termd.core.function.Consumer; import io.termd.core.readline.Completion; @@ -14,6 +17,7 @@ import java.util.List; * @author beiwei30 on 23/11/2016. */ class CompletionHandler implements Consumer { + private static final Logger logger = LogUtil.getArthasLogger(); private final Handler completionHandler; private final Session session; @@ -24,9 +28,14 @@ class CompletionHandler implements Consumer { @Override public void accept(final Completion completion) { - final String line = io.termd.core.util.Helper.fromCodePoints(completion.line()); - final List tokens = Collections.unmodifiableList(CliTokens.tokenize(line)); - com.taobao.arthas.core.shell.cli.Completion comp = new CompletionAdaptor(line, tokens, completion, session); - completionHandler.handle(comp); + try { + final String line = io.termd.core.util.Helper.fromCodePoints(completion.line()); + final List tokens = Collections.unmodifiableList(CliTokens.tokenize(line)); + com.taobao.arthas.core.shell.cli.Completion comp = new CompletionAdaptor(line, tokens, completion, session); + completionHandler.handle(comp); + } catch (Throwable t) { + // t.printStackTrace(); + logger.error(null, "completion error", t); + } } }