我试图通过javascript try / catch块测试URL方案,但我的catch块没有被执行。 Safari只是完全跳过它们,我不明白为什么?!
function open_twitter() {
if (!IS_IOS){ //made unequal IOS so that I could test it on my Macbook
try {
window.location = "twitter://"; //fails and should go to the catch block
} catch (e) { //skipped
try { //skipped
window.location = TWITTERRIFIC_URL_SCHEME; //skipped
} catch (e) { //skipped
null; //skipped
} //skipped
} //skipped
} else {
window.open(TWITTER_URL, "_blank");
}
}
有谁知道为什么会这样?
我希望代码测试第一个URL方案。如果那不成功(理论上),请转到catch块并运行代码,在我的情况下,再次尝试使用下一个URL方案进行测试,依此类推。 但这不会发生吗?!我真的很困惑......
答案 0 :(得分:0)
尝试捕捉并不像你写的那样完成,你需要为你的捕获提供一个例外,否则它不会发生一些不好的事情。
请参阅以下文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
try / catch应该用作自定义异常的简单测试。例如,
try
{
if(false==false)
{
throw "myException"; // generates an exception
}
catch (e) {
// statements to handle any exceptions
logMyErrors(e); // pass exception object to error handler
}
正如您所看到的,try应测试某些内容并在满足某些条件时返回异常。