Don't swallow errors on varUpdate()

Add MIError class for exceptions. Check error type on varUpdate() failure
and rethrow if it's not "Variable object not found".
This commit is contained in:
gentoo90 2017-06-10 14:55:41 +03:00
commit ca0f86a37c
3 changed files with 48 additions and 8 deletions

View file

@ -1,4 +1,4 @@
import { Breakpoint, IBackend, Stack, SSHArguments, Variable, VariableObject } from "../backend"
import { Breakpoint, IBackend, Stack, SSHArguments, Variable, VariableObject, MIError } from "../backend"
import * as ChildProcess from "child_process"
import { EventEmitter } from "events"
import { parseMI, MINode } from '../mi_parse';
@ -729,11 +729,11 @@ export class MI2 extends EventEmitter implements IBackend {
this.handlers[sel] = (node: MINode) => {
if (node && node.resultRecords && node.resultRecords.resultClass === "error") {
if (suppressFailure) {
this.log("stderr", "WARNING: Error executing command '" + command + "'");
this.log("stderr", `WARNING: Error executing command '${command}'`);
resolve(node);
}
else
reject((node.result("msg") || "Internal error") + " (from " + command + ")");
reject(new MIError(node.result("msg") || "Internal error", command));
}
else
resolve(node);