使用three.js
做一些事情时,我注意到了一些限制,具体取决于运行代码的客户端。一个例子是,如果我有很多MeshPhongMaterial
和Light
,然后在低端笔记本电脑/手机上试用,我会得到着色器错误。有时requestAnimationFrame()
会完全停止执行,有时我只会遇到此错误(以及WebGL警告)。
我的问题是是否有可能捕获这些错误?使用try-catch
进行了一些压力测试脚本,但是即使出现错误和警告之后,也永远不会调用catch
。
var rendering = function()
{
lights.push(new THREE.PointLight());
lights[lights.length-1].position.set((Math.random()*10)-5,(Math.random()*10)-5,(Math.random()*10)-5);
scene.add(lights[lights.length-1]);
try
{
renderer.render(scene,camera);
}
catch(e)
{
console.log("Limit!"); // never shown
}
requestAnimationFrame(rendering);
}
答案 0 :(得分:1)
console.error = yourFunction() console.warning = yourFunction()
检查其中的消息,并对其进行处理。