Created
February 9, 2016 16:56
-
-
Save jasonmcaffee/127236774f9294453832 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
//error is caught by the promise | |
function someSyncFunctionThrow(){ | |
let promise = new Promise((resolve, reject)=>{ | |
throw 'someSyncFunctionThrow error occurred!!!!'; | |
resolve(); | |
}); | |
return promise; | |
} | |
someSyncFunctionThrow().then(()=>{}).catch(err=>{ console.error(`Promise.catch -- error someSyncFunctionThrow: ${err}`)}); | |
//error is caught by the promise | |
function someSyncFunctionReferrenceError(){ | |
let promise = new Promise((resolve, reject)=>{ | |
asdf.x(); | |
resolve(); | |
}); | |
return promise; | |
} | |
someSyncFunctionReferrenceError().then(()=>{}).catch(err=>{console.error(`Promise.catch -- error someSyncFunctionReferrenceError ${err}`)}); | |
//error is NOT caught by the promise. | |
function someAsyncFunctionThrow(){ | |
let promise = new Promise((resolve, reject)=>{ | |
setTimeout(()=>{ | |
throw 'someAsyncFunctionThrow error occurred!!!!'; | |
resolve(); | |
},0); | |
}); | |
return promise; | |
} | |
someAsyncFunctionThrow().then(()=>{}).catch(err=>{ console.error(`Promise.catch -- error someAsyncFunctionThrow: ${err}`)}); | |
//error is NOT caught by the promise | |
function someAsyncFunctionReferenceError(){ | |
let promise = new Promise((resolve, reject)=>{ | |
setTimeout(()=>{ | |
asdf.asdf(); | |
resolve(); | |
},0); | |
}); | |
return promise; | |
} | |
someAsyncFunctionReferenceError().then(()=>{}).catch(err=>{console.error(`Promise.catch -- someAsyncFunctionReferenceError reference error ${err}`)}); | |
//error is NOT caught by try catch. | |
function nonPromiseAsyncThrowWithCatchOutside(){ | |
try{ | |
setTimeout(()=>{ | |
throw 'nonPromiseAsyncThrow error occurred!!!!'; | |
},0) | |
}catch(e){ | |
console.error(`catch caught exception ${e}`); | |
} | |
} | |
nonPromiseAsyncThrowWithCatchOutside(); | |
//error is caught | |
function nonPromiseAsyncThrowWithCatchInside(){ | |
setTimeout(()=>{ | |
try{ | |
throw 'nonPromiseAsyncThrow error occurred!!!!'; | |
}catch(e){ | |
console.error(`catch caught exception ${e}`); | |
} | |
},0); | |
} | |
nonPromiseAsyncThrowWithCatchInside(); | |
//error is caught by promise | |
function someAsyncFunctionReferenceErrorWithTryCatch(){ | |
let promise = new Promise((resolve, reject)=>{ | |
setTimeout(()=>{ | |
try{ | |
asdf.asdf(); | |
resolve(); | |
}catch(e){ | |
reject(e); | |
} | |
},0); | |
}); | |
return promise; | |
} | |
someAsyncFunctionReferenceErrorWithTryCatch().then(()=>{}).catch(err=>{console.error(`Promise.catch -- someAsyncFunctionReferenceErrorWithTryCatch reference error ${err}`)}); | |
process.on('uncaughtException', (err) => { | |
console.log(`Process Caught exception: ${err}`); | |
}); | |
process.on('unhandledRejection', (reason, p) => { | |
console.log(`Process unhandledRejection ${reason}`); | |
}); | |
process.on('rejectionHandled', (p) => { | |
console.log(`Process rejection handled`); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Result:
Promise.catch -- error someSyncFunctionThrow: someSyncFunctionThrow error occurred!!!!
Promise.catch -- error someSyncFunctionReferrenceError ReferenceError: asdf is not defined
Process Caught exception: someAsyncFunctionThrow error occurred!!!!
Process Caught exception: ReferenceError: asdf is not defined
Process Caught exception: nonPromiseAsyncThrow error occurred!!!!
catch caught exception nonPromiseAsyncThrow error occurred!!!!
Promise.catch -- someAsyncFunctionReferenceErrorWithTryCatch reference error ReferenceError: asdf is not defined