javascript - 你如何根据王位值(value)做事?

标签 javascript try-catch catch-block

MDC 表示要这样做,但也表示他们认为这只是一个 FireFox 扩展:

实时代码:http://jsfiddle.net/vQsUX/

try {  
   throw("InvalidNameException");  
}  

catch (e if e == "InvalidNameException") {
   document.write(e)  
}  

catch (e if e == "InvalidIdException") {
   document.write(e)  
}  

catch (e if e == "InvalidEmailException") {  
   document.write(e)  
}  

我怎样才能做一个适用于所有浏览器的类似的事情?

最佳答案

只需捕获对象并在单个 catch block 中对其进行评估:

try {
  // stuff
}
catch (exc) {
  if (exc === "InvalidNameException") {
    // do something
  }
  else if (exc === "whatever") {
    // do something else
  }
}

由于异常只是对象,并且您可以抛出任何您喜欢的东西,因此您始终可以开发自己的更复杂的异常结构。异常对象可以有要运行的代码、数字键,无论您需要什么。也就是说,我从未发现 Javascript 中复杂的异常机制有多大用处;它似乎并没有出现太多。尽管如此:

function riskyCodeHere() {
  // scary dangerous things
  if (badThings()) {
    throw {
      key: 207,
      badnessLevel: "terrible",
      toString: function() {
        return "Things have gotten " + this.badnessLevel;
      }
    };
  }
}

// ...

try {
   riskyCodeHere();
}
catch (b) {
   switch (b.key) {
     case 207: console.log(b.toString()); 
     // ...
   }
}

关于javascript - 你如何根据王位值(value)做事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4554827/

相关文章:

C# catch(DataException) - 没有定义变量

tsql - Invoke-Sqlcmd有时会报告TSQL错误,有时却不会。

javascript - 打印数字中的日期

java - 删除重复的 try/catch 代码

java - 尝试/捕获和输入不匹配异常

java - 发生异常时如何继续批量插入

javascript - 针对另一个对象的 JSON 递归值替换

javascript - Mobile Safari - 通过 focus() 获得乐趣

javascript - 即使使用捕获阶段,OnDrop 事件目标也是子对象

c++ - 为什么要按基数抛出派生类捕获?