JavaScript契约和断言
这已经困扰了我一段时间了。我在断言失败时抛出一个异常,但这只有在我能够捕获异常时才有用(在这种情况下,我向用户发出警报)。如果我不能捕捉到异常,那么JavaScript契约和断言,javascript,assert,design-by-contract,Javascript,Assert,Design By Contract,这已经困扰了我一段时间了。我在断言失败时抛出一个异常,但这只有在我能够捕获异常时才有用(在这种情况下,我向用户发出警报)。如果我不能捕捉到异常,那么 我依靠浏览器通知用户出现了内部错误(浏览器可能什么也不做,因此用户永远不会发现有问题),并且 我看不到里面,所以不能清理 那么,在JavaScript中是否有处理断言错误的好方法呢?是否有某种方法可以捕获未捕获的异常?请注意,我对单元测试、用户错误等不感兴趣-我只关心契约编程,在契约编程中,用户和开发人员都需要知道有错误。对于断言,有。但这只会记录
function SmartError(message) {
Error.call(this, message);
$('<div class="error">Some problem occured, the app will stop working</div>')
.appendTo("body");
$.post("/log/clientside/js.php", this);
...
}
if (something.does(! "work"))
throw new SmartError("mysterious problem");
函数智能错误(消息){
错误。呼叫(此,消息);
$(“出现问题,应用程序将停止工作”)
.附于(“主体”);
$.post(“/log/clientside/js.php”,this);
...
}
如果(某物做了(!“工作”))
抛出新的智能错误(“神秘问题”);
问题通常是,对于onerror
来说足够聪明的浏览器,不要抛出恼人的、棘手的错误=)当然是个好答案!