Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Apr 12, 2024. It is now read-only.
/angular.jsPublic archive

Commit59fade3

Browse files
author
Thomas Grainger
committed
Add traceback to unhandled promise rejections,Fixes:#14631
1 parent4e143fc commit59fade3

File tree

2 files changed

+44
-32
lines changed

2 files changed

+44
-32
lines changed

‎src/ng/q.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,11 @@ function qFactory(nextTick, exceptionHandler, errorOnUnhandledRejections) {
381381
if(!toCheck.pur){
382382
toCheck.pur=true;
383383
varerrorMessage='Possibly unhandled rejection: '+toDebugString(toCheck.value);
384-
exceptionHandler(errorMessage);
384+
if(toCheck.valueinstanceofError){
385+
exceptionHandler(toCheck.value,errorMessage);
386+
}else{
387+
exceptionHandler(errorMessage);
388+
}
385389
}
386390
}
387391
}

‎test/ng/qSpec.js

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2167,45 +2167,53 @@ describe('q', function() {
21672167

21682168

21692169
describe('when exceptionHandler is called',function(){
2170-
it('should log an unhandled rejected promise',function(){
2171-
vardefer=q.defer();
2172-
defer.reject('foo');
2173-
mockNextTick.flush();
2174-
expect(exceptionHandlerStr()).toBe('Possibly unhandled rejection: foo');
2175-
});
2170+
varfixtures=[
2171+
{type:'exception',value:newError('Fail')},
2172+
{type:'plain value',value:'foo'}
2173+
];
2174+
forEach(fixtures,function(fixture){
2175+
vartype=fixture.type;
2176+
varvalue=fixture.value;
2177+
it('should log an unhandled'+type+' rejected promise',function(){
2178+
vardefer=q.defer();
2179+
defer.reject('foo');
2180+
mockNextTick.flush();
2181+
expect(exceptionHandlerStr()).toBe('Possibly unhandled rejection: foo');
2182+
});
21762183

21772184

2178-
it('should not log an unhandled rejected promise if disabled',function(){
2179-
vardefer=q_no_error.defer();
2180-
defer.reject('foo');
2181-
expect(exceptionHandlerStr()).toBe('');
2182-
});
2185+
it('should not log an unhandled'+type+' rejected promise if disabled',function(){
2186+
vardefer=q_no_error.defer();
2187+
defer.reject('foo');
2188+
expect(exceptionHandlerStr()).toBe('');
2189+
});
21832190

21842191

2185-
it('should log a handled rejected promise on a promise without rejection callbacks',function(){
2186-
vardefer=q.defer();
2187-
defer.promise.then(noop);
2188-
defer.reject('foo');
2189-
mockNextTick.flush();
2190-
expect(exceptionHandlerStr()).toBe('Possibly unhandled rejection: foo');
2191-
});
2192+
it('should log a handled'+type+' rejected promise on a promise without rejection callbacks',function(){
2193+
vardefer=q.defer();
2194+
defer.promise.then(noop);
2195+
defer.reject('foo');
2196+
mockNextTick.flush();
2197+
expect(exceptionHandlerStr()).toBe('Possibly unhandled rejection: foo');
2198+
});
21922199

21932200

2194-
it('should not log a handledrejected promise',function(){
2195-
vardefer=q.defer();
2196-
defer.promise.catch(noop);
2197-
defer.reject('foo');
2198-
mockNextTick.flush();
2199-
expect(exceptionHandlerStr()).toBe('');
2200-
});
2201+
it('should not log a handled'+type+'rejected promise',function(){
2202+
vardefer=q.defer();
2203+
defer.promise.catch(noop);
2204+
defer.reject('foo');
2205+
mockNextTick.flush();
2206+
expect(exceptionHandlerStr()).toBe('');
2207+
});
22012208

22022209

2203-
it('should not log a handled rejected promise that is handled in a future tick',function(){
2204-
vardefer=q.defer();
2205-
defer.promise.catch(noop);
2206-
defer.resolve(q.reject('foo'));
2207-
mockNextTick.flush();
2208-
expect(exceptionHandlerStr()).toBe('');
2210+
it('should not log a handled'+type+' rejected promise that is handled in a future tick',function(){
2211+
vardefer=q.defer();
2212+
defer.promise.catch(noop);
2213+
defer.resolve(q.reject('foo'));
2214+
mockNextTick.flush();
2215+
expect(exceptionHandlerStr()).toBe('');
2216+
});
22092217
});
22102218
});
22112219
});

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp