feat(lang): added "context" to BaseException

This commit is contained in:
vsavkin 2015-07-22 11:59:16 -07:00
parent 8ad4ad57d1
commit 8ecb632d70
3 changed files with 19 additions and 4 deletions

View File

@ -145,6 +145,11 @@ function _createNgZone(givenReporter: Function): NgZone {
var defaultErrorReporter = (exception, stackTrace) => { var defaultErrorReporter = (exception, stackTrace) => {
var longStackTrace = ListWrapper.join(stackTrace, "\n\n-----async gap-----\n"); var longStackTrace = ListWrapper.join(stackTrace, "\n\n-----async gap-----\n");
DOM.logError(`${exception}\n\n${longStackTrace}`); DOM.logError(`${exception}\n\n${longStackTrace}`);
if (exception instanceof BaseException && isPresent(exception.context)) {
print("Error Context:");
print(exception.context);
}
throw exception; throw exception;
}; };

View File

@ -183,11 +183,12 @@ class FunctionWrapper {
} }
class BaseException extends Error { class BaseException extends Error {
final dynamic context;
final String message; final String message;
final originalException; final originalException;
final originalStack; final originalStack;
BaseException([this.message, this.originalException, this.originalStack]); BaseException([this.message, this.originalException, this.originalStack, this.context]);
String toString() { String toString() {
return this.message; return this.message;

View File

@ -11,11 +11,18 @@ export function getTypeNameForDebugging(type: Type): string {
export class BaseException extends Error { export class BaseException extends Error {
stack; stack;
constructor(public message?: string, public originalException?, public originalStack?) { constructor(public message?: string, private _originalException?, private _originalStack?,
private _context?) {
super(message); super(message);
this.stack = (<any>new Error(message)).stack; this.stack = (<any>new Error(message)).stack;
} }
get originalException(): any { return this._originalException; }
get originalStack(): any { return this._originalStack; }
get context(): any { return this._context; }
toString(): string { return this.message; } toString(): string { return this.message; }
} }
@ -118,7 +125,9 @@ export function stringify(token): string {
return token.name; return token.name;
} }
return token.toString(); var res = token.toString();
var newLineIndex = res.indexOf("\n");
return (newLineIndex === -1) ? res : res.substring(0, newLineIndex);
} }
export class StringWrapper { export class StringWrapper {