我正在编写处理错误的代码,其中一部分是向用户打印消息(例如“哎呀!”)
但是,错误代码不知道之前发生了什么,因此存在可能隐藏错误消息的危险。
例如,如果生成Javascript时发生错误怎么办?那么HTML输出将如下所示:
....
<script>
var x = Whoops!
然后,就用户所见,没有错误消息,页面就会停止。
通常的解决方案是在打印错误消息之前打印一系列结束标记:
'">--></script></table>Whoops!
用户可能会在页面上看到额外的内容,例如“&gt; - &gt;”这不是很整洁,但他们会看到错误信息,这是重要的事情。
所以我的问题是,您可以考虑将哪些其他结束标记放在上面的字符串中以确保用户始终可以看到错误消息?
编辑:是的,我知道这不是最好的方法,输出缓冲可能是更好的技术。对不起,本来应该有我不能使用输出缓冲的原始问题。
答案 0 :(得分:2)
确保显示错误消息的唯一正确方法是,以完全顺序打开之前已打开过的完全那些标记。
其他所有内容都只是一种破旧的,破碎的HTML。它通常会因为浏览器的宽大而起作用,但这并不能使它成为一个好的解决方案。
处理此问题的最佳方法是执行所有必要的操作 - 我假设您在这里谈论服务器端操作,对吗? - 之前输出HTML。通过输出缓冲,或者通过将所有计算值填入HTML模板作为最后一步。
这样,如果出现问题,您可以将用户重定向到错误页面,或者显示专用于显示错误的HTML结构。
答案 1 :(得分:0)
其中一个解决方案是缓冲输出并仅在完全渲染时打印页面。如果发生这种情况,您将能够呈现包含错误消息的正确页面。如果即使渲染错误页面失败,您也可以只输出文本消息。用户永远不会看到半完成的页面。
答案 2 :(得分:0)
你可以做的一件事是添加
<script>window.onload = function () { document.write('<!DOCTYPE html>Whoops!'); };</script>
在你的弹幕中的</script>
标签之后。
如果启用了javascript,则document.write会将现有页面吹走,您将只剩下错误消息。