@serenity-js/core
Version:
The core Serenity/JS framework, providing the Screenplay Pattern interfaces, as well as the test reporting and integration infrastructure
80 lines • 2.3 kB
TypeScript
/**
* Base class for custom errors that may occur during execution of a test scenario.
*
* ## Defining a custom error
*
* ```ts
* import { RuntimeError } from '@serenity-js/core'
*
* export class CustomError extends RuntimeError {
* constructor(message: string, cause?: Error) {
* super(CustomError, message, cause);
* }
* }
* ```
*
* ## Wrapping a sync error
*
* ```ts
* try {
* operationThatMightThrowAnError();
* } catch(error) {
* // catch and re-throw
* throw new CustomError('operationThatMightThrowAnError has failed', error);
* }
* ```
*
* ## Wrapping an async error
*
* ```ts
* operationThatMightRejectAPromise()
* .catch(error => {
* // catch and re-throw
* throw new CustomError('operationThatMightThrowAnError has failed', error)
* })
* ```
*
* ## Registering a custom error with [`ErrorSerialiser`](https://serenity-js.org/api/core/class/ErrorSerialiser/)
*
* ```ts
* import { RuntimeError } from '@serenity-js/core'
* import { ErrorSerialiser } from '@serenity-js/core/lib/io'
*
* export class CustomError extends RuntimeError {
*
* static fromJSON(serialised: JSONObject): CustomError {
* const error = new CustomError(
* serialised.message as string,
* ErrorSerialiser.deserialise(serialised.cause as string | undefined),
* );
*
* error.stack = serialised.stack as string;
*
* return error;
* }
*
* constructor(message: string, cause?: Error) {
* super(CustomError, message, cause);
* }
* }
*
* ErrorSerialiser.registerErrorTypes(CustomError)
* ```
*
* @group Errors
*/
export declare abstract class RuntimeError extends Error {
readonly cause?: Error;
/**
* @param type - Constructor function used to instantiate a subclass of a RuntimeError
* @param message - Human-readable description of the error
* @param [cause] - The root cause of this [`RuntimeError`](https://serenity-js.org/api/core/class/RuntimeError/), if any
*/
protected constructor(type: new (...args: any[]) => RuntimeError, message: string, cause?: Error);
/**
* Human-readable description of the error
*/
toString(): string;
toJSON(): object;
}
//# sourceMappingURL=RuntimeError.d.ts.map