当前位置: 首页 > 后端技术 > Node.js

一个前端架构师的不一样的期末面试题【实战系列】

时间:2023-04-04 01:24:02 Node.js

本文来自面试,前端架构师的岗位。最后面试官临时给我拿出了一个比较难得的面试题,最终拿下了offer。这道题虽然不难,但是要考察的东西还是挺有意思的。另外最近看到前端防御性编程和前端错误优雅处理的文章,所以才想起把这个问题记下来。这是一个关于前端错误处理的问题。这道题的答案由浅入深:xxxxisundefined,致命错误,之前没有错误捕获处理机制,页面不跳转到百度二版:这里比较简单,因为它只是在try中才会捕获错误,一旦抛出错误,就会被全局捕获错误的函数捕获。最终输出序列:try抛出错误。如果全局捕获错误,添加函数调用版本,要求最终打印站输出什么calltest,执行test,执行完后尝试同步代码执行完毕,抛出Error结束test的调用函数(只要函数内部抛出错误,就会结束这个函数的调用,弹出栈)。全局捕获的错误还是我们自己定义为'throwinganerror'错误的内容,console.log(a)还没有执行到variant版本。这里主要考察函数抛出的错误与finally的执行相匹配。我们始终相信,只要在函数内部抛出错误,函数调用就会结束。立即离开堆栈。所以return和thrownewError不能一起用,finally还是会执行。finally,顾名思义,就是在最后执行>不管try和catch之后有没有异常,都会执行finally语句。添加webpack工程构建的variant版本,选择这个html作为模板,询问,如果其他通过webpack构建的文件出现致命错误,比如因为treesharking,不兼容低版本浏览器,全局错误可以这个时候被捕获答案是不能被捕获,因为被webpack打包后,代码会变得致命。如果此时其他模块出现致命错误,比如在IE6中运行const代码,将直接导致致命错误,并阻止浏览器解析。代码,页面挂起。js引擎不会解析下面的代码~运行到window.onerror之前就挂了。以上只是一道比较简单的面试题,考查错误处理能力,接下来结合React的错误边界、资源请求错误、ajax请求错误等处理来发号施令,这里可能需要你对这些有更多的理解和实践东西为了保持window.onerror和window.addEventListener('error')来捕获js运行时错误使用window.onerror和window.addEventListener('error')可以捕获,但是window.onerror包含详细的错误堆栈信息,这保存在error.stack中,所以我们选择使用onerror来捕获js运行时错误。资源加载错误使用addEventListener监听错误事件捕获实现原理:当资源(如