【问题标题】:How to display something if Catch isn't run?如果 Catch 没有运行,如何显示一些东西?
【发布时间】:2019-01-16 22:23:46
【问题描述】:

我想知道只有在它通过时如何“做某事”,例如 catch 只有在出现错误时才运行。 就像在我的示例中一样,console.log("FOO") 不会导致错误,因此 catch 不会运行,但是如果没有被捕获,我如何才能运行 only

 try { 
  console.log("FOO")
 }
 catch(err) {
   message.innerHTML = "Input is WRONG";
 }
 message.innerHTML = "Input Works!" // <--- this will always get hit regardless of error or not

【问题讨论】:

标签: javascript syntax try-catch


【解决方案1】:

为了让你的 catch 运行 try 块需要失败——就像在缺少变量的情况下一样。

const messageA = document.querySelector('#message-a');
const messageB = document.querySelector('#message-b');

const a = 10;
const b = 10;  
// const c = 10;
 

//  Test 1 (works)
try {
  let sum = a + b;
  messageA.innerHTML = "We're Happy!"
} catch (err) {
  messageA.innerHTML = "Houston we have a problem!";
}

//  Test 2 (fails because c is not defined)
try {
  let sum = a + c;
  messageB.innerHTML = "We're Happy!"
} catch (err) {
  messageB.innerHTML = "Houston we have a problem!";
}
<p>Test 1: <span id="message-a"></span></p>
<p>Test 2: <span id="message-b"></span></p>

if/else 和 try/catch 的区别

If/else 是一个条件语句,它评估一个条件,例如x == 42
然后根据结果运行真或假块。

if (condition) { 
    /* condition is true do... */
}
else { 
    /* condition is false do... */ 
}

Try/catch 是一个异常语句,它将始终运行 try 块并且仅 如果某件事导致抛出错误,则将控制权转移到 catch 块 (通常是一个致命错误,否则会破坏程序)。

try {
    /* do this... and if it fails transfer control to catch */
} 
catch(err) {
    /* something caused an error now do this... */
}

将其视为一种处理错误的方法——例如,如果您向 api 发出请求,然后 由于某种原因服务器没有响应,你没有被授权或者......

阅读全文: Control flow and error handling on MDN

【讨论】:

  • 所以它基本上是一个if else ?
  • 不完全是,一个是条件语句,另一个是异常语句。我试图解释我上面答案的不同之处——希望它有意义:)
【解决方案2】:

我想你可能需要这样的东西:

var success = true;
try { 
    console.log("FOO");
}
catch(err) {
    success = false;
}
if (success)
    message.innerHTML = "Input Works!";
else
    message.innerHTML = "Input is WRONG";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多