使用try / catch测试URL方案

时间:2014-06-01 21:45:47

标签: javascript try-catch url-scheme

我试图通过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方案进行测试,依此类推。 但这不会发生吗?!我真的很困惑......

1 个答案:

答案 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应测试某些内容并在满足某些条件时返回异常。