String (EvaluationContextImpl context, DescriptorLabelListener labelListener) { DebuggerManagerThreadImpl.assertIsManagerThread(); DebugProcessImpl debugProcess = context.getDebugProcess(); getRenderer(debugProcess) .thenAccept(renderer -> calcRepresentation(context, labelListener, debugProcess, renderer)) .exceptionally(throwable -> { throwable = DebuggerUtilsAsync.unwrap(throwable); if (throwable instanceof EvaluateException) { setValueLabelFailed((EvaluateException)throwable); } else { String message; if (throwable instanceof CancellationException) { message = JavaDebuggerBundle.message("error.context.has.changed"); } else if (throwable instanceof VMDisconnectedException) { message = JavaDebuggerBundle.message("error.vm.disconnected"); } else { message = JavaDebuggerBundle.message("internal.debugger.error"); LOG.error(new Throwable(throwable)); } setValueLabelFailed(new EvaluateException(message)); } labelListener.labelChanged(); return null; }); return ""; }