From 74433c3e05734aa1194049fcbcaa92c70ce61c74 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Thu, 12 Dec 2019 20:53:15 +0100 Subject: refactor: re-structure type definitions --- src/wallet-impl/errors.ts | 84 ----------------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 src/wallet-impl/errors.ts (limited to 'src/wallet-impl/errors.ts') diff --git a/src/wallet-impl/errors.ts b/src/wallet-impl/errors.ts deleted file mode 100644 index 803497e66..000000000 --- a/src/wallet-impl/errors.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { OperationError } from "../walletTypes"; - -/* - This file is part of GNU Taler - (C) 2019 GNUnet e.V. - - GNU Taler is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with - GNU Taler; see the file COPYING. If not, see - */ - -/** - * This exception is there to let the caller know that an error happened, - * but the error has already been reported by writing it to the database. - */ -export class OperationFailedAndReportedError extends Error { - constructor(message: string) { - super(message); - - // Set the prototype explicitly. - Object.setPrototypeOf(this, OperationFailedAndReportedError.prototype); - } -} - -/** - * This exception is thrown when an error occured and the caller is - * responsible for recording the failure in the database. - */ -export class OperationFailedError extends Error { - constructor(message: string, public err: OperationError) { - super(message); - - // Set the prototype explicitly. - Object.setPrototypeOf(this, OperationFailedError.prototype); - } -} - -/** - * Run an operation and call the onOpError callback - * when there was an exception or operation error that must be reported. - * The cause will be re-thrown to the caller. - */ -export async function guardOperationException( - op: () => Promise, - onOpError: (e: OperationError) => Promise, -): Promise { - try { - return await op(); - } catch (e) { - console.log("guard: caught exception"); - if (e instanceof OperationFailedAndReportedError) { - throw e; - } - if (e instanceof OperationFailedError) { - await onOpError(e.err); - throw new OperationFailedAndReportedError(e.message); - } - if (e instanceof Error) { - console.log("guard: caught Error"); - await onOpError({ - type: "exception", - message: e.message, - details: {}, - }); - throw new OperationFailedAndReportedError(e.message); - } - console.log("guard: caught something else"); - await onOpError({ - type: "exception", - message: "non-error exception thrown", - details: { - value: e.toString(), - }, - }); - throw new OperationFailedAndReportedError(e.message); - } -} \ No newline at end of file -- cgit v1.2.3