// 在函数块的try中return,会直接成为函数的return值 function test() { try { alrt(123) return 'success' } catch(err) { return 'fail' } } var result = test() console.log(result); // fail /** * 浏览器全局错误的处理 * web 浏览器,所有未捕获的错误向上冒泡,最终由window.onerror 这一最高层级的事件函数处理。 * 请注意,在web浏览器的控制台报错是无法被捕获的 */ window.onerror = function (msg, url, line, col) { console.log(msg, url, line, col); return true; // 告诉浏览器错误已被处理,没必要展示给用户 } /** * node.js 的全局错误处理 * process 对象会触发unCaughtException 事件。 */ process.on('unCaughtException', function (err) { console.log(err); }) /** * domain 运行代码以及错误捕捉 */ var domain = require('domain').create(); domain.on('error', function (err) { console.log(err); }); /** * 该示例的基本思想是,也许会引发错误的代码可以放在这里运行 * 若函数调用的代码引发错误,将触发该domain的错误事件。通过监听error事件可以做出恰当的处理 */ domain.run(function () { /* some code that might throw an error */ })