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); + } } }