From f944608389ff6bba5d3626965c4ff39675c31298 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 14 Mar 2014 09:52:21 +0100 Subject: [PATCH] catch any error from EP impl --- .../engine/CompoundPositionManager.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java b/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java index 250186e74ae9..70cb4b11570f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java @@ -21,6 +21,7 @@ import com.intellij.debugger.SourcePosition; import com.intellij.debugger.engine.evaluation.EvaluationContext; import com.intellij.debugger.jdi.StackFrameProxyImpl; import com.intellij.debugger.requests.ClassPrepareRequestor; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.util.ThreeState; import com.intellij.xdebugger.frame.XStackFrame; import com.sun.jdi.Location; @@ -34,6 +35,8 @@ import java.util.Collections; import java.util.List; public class CompoundPositionManager extends PositionManagerEx { + private static final Logger LOG = Logger.getInstance(CompoundPositionManager.class); + private final ArrayList myPositionManagers = new ArrayList(); @SuppressWarnings("UnusedDeclaration") @@ -105,9 +108,14 @@ public class CompoundPositionManager extends PositionManagerEx { public XStackFrame createStackFrame(@NotNull StackFrameProxyImpl frame, @NotNull DebugProcessImpl debugProcess, @NotNull Location location) { for (PositionManager positionManager : myPositionManagers) { if (positionManager instanceof PositionManagerEx) { - XStackFrame xStackFrame = ((PositionManagerEx)positionManager).createStackFrame(frame, debugProcess, location); - if (xStackFrame != null) { - return xStackFrame; + try { + XStackFrame xStackFrame = ((PositionManagerEx)positionManager).createStackFrame(frame, debugProcess, location); + if (xStackFrame != null) { + return xStackFrame; + } + } + catch (Throwable e) { + LOG.error(e); } } } @@ -121,9 +129,14 @@ public class CompoundPositionManager extends PositionManagerEx { @NotNull String expression) { for (PositionManager positionManager : myPositionManagers) { if (positionManager instanceof PositionManagerEx) { - ThreeState result = ((PositionManagerEx)positionManager).evaluateCondition(context, frame, location, expression); - if (result != ThreeState.UNSURE) { - return result; + try { + ThreeState result = ((PositionManagerEx)positionManager).evaluateCondition(context, frame, location, expression); + if (result != ThreeState.UNSURE) { + return result; + } + } + catch (Throwable e) { + LOG.error(e); } } }