我试图弄清楚为什么我的代码在使用以下语句调用它之后没有抛出并显示错误消息(页面只是空白):
document.write(add(10,wrong_input));
program.js
var add = function (a,b){
if(typeof a !== 'number' || typeof b !== 'number'){
throw{
name: 'TypeError',
message: 'add needs numbers'
} catch(e){
document.writeln(e.name + ': ' + e.message);
}
}
return a + b;
}
program.html
<html>
<body>
<pre><script src="program.js"></script></pre>
<div></div>
</body>
</html>
最佳答案
throw
语句没有 catch
子句,try
有。你应该分开 throw 和接住。例如:
var add = function (a,b){
if(typeof a !== 'number' || typeof b !== 'number'){
throw{
name: 'TypeError',
message: 'add needs numbers'
}
}
return a + b;
}
try {
add('foo', 1);
} catch(ex) {
alert(ex.message);
}
请注意,我将 document.writeln
替换为 alert
,因为如果它在页面加载后运行,前者将覆盖整个文档。如果您想要更好看的东西,请直接操作 DOM(通过更改某些元素的 innerHTML、附加节点等)。
关于JavaScript 异常不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646638/