@eclipse-scout/core
Version:
Eclipse Scout runtime
166 lines • 7.49 kB
TypeScript
/// <reference types="jquery" />
import { AjaxSettings, DoEntity, InitModelOf, LogLevel, MessageBox, MessageBoxActionEvent, ModelOf, ObjectModel, ObjectWithType, Session, Status, StatusSeverity } from './index';
export interface ErrorHandlerModel extends ObjectModel<ErrorHandler> {
/**
* Default is true
*/
logError?: boolean;
/**
* Default is true
*/
displayError?: boolean;
/**
* Default is false
*/
sendError?: boolean;
session?: Session;
}
export interface ErrorInfo {
/**
* The original error. May be Error, AjaxError or any other type like string, number etc. since any object can be thrown.
*/
error?: any;
/**
* Specifies if the error should be shown as fatal error or not.
* If true, a fatal error is shown which forces the user to reload the page (unless in dev mode where it can be ignored).
* If false, a normal messagebox with an ok button is shown and after confirmation the user is allowed to use the app again without reload.
* The default is false.
*/
showAsFatalError?: boolean;
/**
* The message of the error
*/
message?: string;
/**
* The error code
*/
code?: string;
/**
* The HTTP status code if the error comes from an HTTP request
*/
httpStatus?: number;
/**
* If the error contains an ErrorDo (see ErrorDo.java)
*/
errorDo?: ErrorDo;
/**
* The original stack trace
*/
stack?: string;
/**
* Sourcemapped stack trace
*/
mappedStack?: string;
/**
* If there stacktrace mapping to source-maps fails this field contains the cause.
*/
mappingError?: string;
/**
* The full message to log. Typically consists of the message and e.g. a stack trace.
*/
log?: string;
/**
* Specifies the level errors are logged to the console (and sent to the backend for logging). Default is {@link LogLevel.ERROR}.
*/
level?: LogLevel;
/**
* Additional custom debug info. May come from an extra field on an Error thrown (Scout extension) or the response text from an ajax call.
*/
debugInfo?: string;
}
/**
* See org.eclipse.scout.rt.rest.error.ErrorDo
*/
export interface ErrorDo extends DoEntity {
httpStatus?: number;
errorCode?: string;
title?: string;
message?: string;
correlationId?: string;
severity?: string;
}
export declare class ErrorHandler implements ErrorHandlerModel, ObjectWithType {
model: ErrorHandlerModel;
objectType: string;
logError: boolean;
displayError: boolean;
sendError: boolean;
session: Session;
windowErrorHandler: OnErrorEventHandlerNonNull;
constructor();
/**
* Use this constant to configure whether all instances of the ErrorHandler should write
* to the console. When you've installed a console appender to log4javascript you can set the
* value to false, because the ErrorHandler also calls $.log.error and thus the appender has
* already written the message to the console. We don't want to see it twice.
*/
static CONSOLE_OUTPUT: boolean;
init(options?: InitModelOf<this>): void;
protected _onWindowError(errorMessage: string, fileName?: string, lineNumber?: number, columnNumber?: number, error?: Error): void;
protected _isIgnorableScriptError(message: string, fileName?: string, lineNumber?: number, columnNumber?: number, error?: Error): boolean;
/**
* Handles unexpected JavaScript errors. The arguments are first analyzed and then handled.
*
* This method may be called by passing the arguments individually or as an array (or array-like object)
* in the first argument.
* Examples:
* 1. try { ... } catch (err) { handler.handle(err); }
* 2. $.get().fail(function(jqXHR, textStatus, errorThrown) { handler.handle(jqXHR, textStatus, errorThrown); }
* 3. $.get().fail(function(jqXHR, textStatus, errorThrown) { handler.handle(arguments); } // <-- recommended
*
* @param errorOrArgs error or array or array-like object containing the error and other arguments
* @returns the analyzed errorInfo
*/
handle(errorOrArgs: any | IArguments | any[], ...args: any[]): JQuery.Promise<ErrorInfo>;
/**
* Returns an "errorInfo" object for the given arguments. The following cases are handled:
* 1. Error objects (code: computed by getJsErrorCode())
* 2. jQuery AJAX errors (code: 'X' + HTTP status code)
* 3. Nothing (code: 'P3')
* 4. Everything else (code: 'P4')
*/
analyzeError(error?: any, ...args: any[]): JQuery.Promise<ErrorInfo>;
protected _analyzeError(errorInfo: ErrorInfo, ...args: any[]): JQuery.Promise<ErrorInfo>;
protected _analyzeRegularError(errorInfo: ErrorInfo): void;
protected _analyzeAjaxError(errorInfo: ErrorInfo, ...args: any[]): void;
formatAjaxStatus(jqXHR: JQuery.jqXHR, errorThrown: string): string;
formatAjaxRequest(requestOptions: AjaxSettings): string;
protected _severityToLogLevel(severity: string): LogLevel;
protected _analyzeOtherError(errorInfo: ErrorInfo): void;
protected _analyzeNoError(errorInfo: ErrorInfo): void;
mapStack(stack: string): JQuery.Promise<string, {
message: string;
error: Error;
}>;
/**
* Expects an object as returned by {@link analyzeError} and handles it:
* - If the flag "logError" is set, the log message is printed to the console
* - If there is a scout session and the flag "displayError" is set, the error is shown in a message box.
* - If there is a scout session and the flag "sendError" is set, the error is sent to the UI server.
*/
handleErrorInfo(errorInfo: ErrorInfo): JQuery.Promise<ErrorInfo>;
protected _logErrorInfo(errorInfo: ErrorInfo): void;
/**
* Generate a "cool looking" error code from the JS error object, that
* does not reveal too much technical information, but at least indicates
* that a JS runtime error has occurred. (In contrast, fatal errors from
* the server have numeric error codes.)
*/
getJsErrorCode(error?: Error): string;
protected _showErrorMessageBox(session: Session, errorInfo: ErrorInfo): JQuery.Promise<MessageBoxActionEvent>;
protected _buildErrorMessageBoxModel(session: Session, errorInfo: ErrorInfo): ModelOf<MessageBox>;
protected _showInternalUiErrorMessageBox(session: Session, errorMessage: string, errorCode: string, logMessage: string): JQuery.Promise<void>;
protected _sendErrorMessage(session: Session, logMessage: string, logLevel: LogLevel): void;
errorInfoToStatus(session: Session, errorInfo: ErrorInfo): Status;
protected _errorInfoToStatusCode(errorInfo: ErrorInfo): number;
protected _errorInfoToStatusSeverity(errorInfo: ErrorInfo): StatusSeverity;
protected _errorInfoToStatusMessage(session: Session, errorInfo: ErrorInfo): string;
/**
* Gets the default error message body for the given HTTP status error code.
* @param httpStatus The HTTP status error code. E.g. 503 (Service Unavailable)
* @param session An optional Session for a message in the language of the user. The default language is used if omitted.
* @returns The error message for the given error HTTP status.
*/
getMessageBodyForHttpStatus(httpStatus: number, session?: Session): string;
}
//# sourceMappingURL=ErrorHandler.d.ts.map