2012-03-30 108 views
2

我想知道如何处理脚本中的错误,这个脚本可以用作“解析器”。基本上我需要一种方法来处理解析错误。在javascript中处理错误

由于这个脚本解析的文本应该在HTML中提供,所以我猜抛出错误在javascript控制台不是一个选项,对不对?脚本的用户不应该知道这个脚本,他只需要知道某个HTML属性所需的语法,以便改变元素的行为方式。 认为它像减价。,唯一的区别是我的解析器不会生成任何html,文本等,只要它们符合要解析的文本中提供的条件就隐藏或显示某些输入元素。

我应该坚持一个简单的浏览器警报消息吗?

在文档中附近添加一条错误消息(靠近包含要解析文本的元素)实际上不是一个选项,因为此脚本的目的是修改某些输入元素的行为,而不是附加文本或类似的东西。此外,它会产生不一致的造型..

+0

Check out http://stackoverflow.com/questions/3217294/javascript-try-catch-performance-vs-error-checking-code – 2012-03-30 12:24:44

回答

1

您可以使用尝试捕捉,如:

<script type="text/javascript"> 

try { 
    // Code to run 
    [break;] 
} catch (e) { 
    // Code to run if an exception occurs 
    [break;] 
}[ finally { 
    // Code that is always executed regardless of 
    // an exception occurring 
}] 

</script> 

更多dtails在这里:Javascript

创建功能,会分析你的代码,并把它尝试捕捉内部: - 希望这可以帮助你

2

我不明白你想要什么,但如果你想写的东西到JavaScript控制台只使用console.log("Error!");我希望这可以帮助你。

1

你的问题似乎在等待两种答案:

  1. 如果你的解析器未能解析
  2. 如何显示错误给用户

对1,我会使用try/catch机制的一切都是使用一些云在catch将显示给用户(2) html,比如在输入之后/之前添加一个错误列表。

1

您可以使用Alert Box,但我更愿意向包含错误消息的dom添加一个错误-<div>

类似:

CSS:

#error{ 
    display:none; 
} 

HTML:

<div id="error"></div>   // <- show error here 
<textarea id="input"></textarea> // <- user inputs the text 

的javascript:

try { 
    // Code to run 
} catch (e) { 
    // Write the error to your #error-div and display it 
} 

可选,您可以登录到控制台的错误,当它存在。

if (window.console) console.log('hello world'); 
2

对于一个非常好的示例,您可以尝试将无效的JSON放入http://jsonlint.com/。在文本输入周围设置一个边框为红色,然后包含一个包含解析错误位置的文本框,这是一种非常光滑的图形方式,可以说“此输入有问题,这是它的错误。”它也有助于JSONLint包含行号,以便当它说“x行错误”意味着什么时;你可以去那里。但是这要取决于你的用户是谁。

警告框的一个问题是,它往往会大量吸引用于复制,并且往往会占用页面的其余部分。 HTML中的内联警报将让我浏览textarea,直到找到违规行并进行修复。

这也取决于你的观众。对于某些商业最终用户来说,放置一个错误框会让他们感到沮丧,并让他们很快地打电话给你的电话,说你的产品不起作用 - 提供的细节应该保持最小限度,“这不是有效的X “。另一方面,对于开发者来说,你可能想要告诉他们每一件有点问题的事情,就像Crockford的JSLint所做的那样。