File tree 2 files changed +59
-1
lines changed
2 files changed +59
-1
lines changed Original file line number Diff line number Diff line change @@ -35,7 +35,8 @@ Zone.Reporters.longStackTrace = function (zone) {
35
35
var prevZone ;
36
36
var totalAsyncTime = 0 ;
37
37
38
- trace . push ( "Error: " + zone . erroredStack . _e . message ) ;
38
+ var errorMessage = Zone . Reporters . getErrorMessage ( zone . erroredStack . _e ) ;
39
+ trace . push ( "Error: " + errorMessage ) ;
39
40
trace . push ( zone . erroredStack . get ( ) ) ;
40
41
41
42
processZone ( ) ;
@@ -68,4 +69,20 @@ Zone.Reporters.longStackTrace = function (zone) {
68
69
}
69
70
}
70
71
72
+ // why?
73
+ // in JavaScript, you can throw anything, not just errors
74
+ // developers abuse this. even popular HighCharts does that
75
+ // That's why we need ugly solutions like this
76
+ Zone . Reporters . getErrorMessage = function ( error ) {
77
+ if ( ! error ) {
78
+ return "Oops. sometimes went wrong with zones. There is no error."
79
+ } else if ( typeof error == 'string' ) {
80
+ return error ;
81
+ } else if ( error . message ) {
82
+ return error . message ;
83
+ } else {
84
+ return error . toString ( ) ;
85
+ }
86
+ } ;
87
+
71
88
Zone . Reporters . add ( 'longStackTrace' , Zone . Reporters . longStackTrace ) ;
Original file line number Diff line number Diff line change @@ -63,3 +63,44 @@ Tinytest.add(
63
63
}
64
64
}
65
65
) ;
66
+
67
+ Tinytest . add (
68
+ 'Reporters - getErrorMessage - an error object' ,
69
+ function ( test ) {
70
+ var message = "hello" ;
71
+ var err = new Error ( message ) ;
72
+ test . equal ( Zone . Reporters . getErrorMessage ( err ) , message ) ;
73
+ }
74
+ ) ;
75
+
76
+ Tinytest . add (
77
+ 'Reporters - getErrorMessage - string' ,
78
+ function ( test ) {
79
+ var message = "hello" ;
80
+ test . equal ( Zone . Reporters . getErrorMessage ( message ) , message ) ;
81
+ }
82
+ ) ;
83
+
84
+ Tinytest . add (
85
+ 'Reporters - getErrorMessage - object' ,
86
+ function ( test ) {
87
+ var message = "hello" ;
88
+ var err = { message : message } ;
89
+ test . equal ( Zone . Reporters . getErrorMessage ( err ) , message ) ;
90
+ }
91
+ ) ;
92
+
93
+ Tinytest . add (
94
+ 'Reporters - getErrorMessage - number' ,
95
+ function ( test ) {
96
+ var number = 2 ;
97
+ test . equal ( Zone . Reporters . getErrorMessage ( number ) , number . toString ( ) ) ;
98
+ }
99
+ ) ;
100
+
101
+ Tinytest . add (
102
+ 'Reporters - getErrorMessage - nothing' ,
103
+ function ( test ) {
104
+ test . equal ( / O o p s / . test ( Zone . Reporters . getErrorMessage ( ) ) , true ) ;
105
+ }
106
+ ) ;
You can’t perform that action at this time.
0 commit comments