aboutsummaryrefslogtreecommitdiff
path: root/src/wallet-impl/errors.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-12-12 20:53:15 +0100
committerFlorian Dold <florian.dold@gmail.com>2019-12-12 20:53:15 +0100
commit74433c3e05734aa1194049fcbcaa92c70ce61c74 (patch)
treed30e79c9ac3fd5720de628f6a9764354ec69c648 /src/wallet-impl/errors.ts
parentcc137c87394ec34d2f54d69fe896dfdf3feec5ea (diff)
refactor: re-structure type definitions
Diffstat (limited to 'src/wallet-impl/errors.ts')
-rw-r--r--src/wallet-impl/errors.ts84
1 files changed, 0 insertions, 84 deletions
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 <http://www.gnu.org/licenses/>
- */
-
-/**
- * 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<T>(
- op: () => Promise<T>,
- onOpError: (e: OperationError) => Promise<void>,
-): Promise<T> {
- 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