我有这个“测试”代码:
function func1(){
try{
...stuff...
}catch(err){
throw new Error();
}
}
function func2(){
try{
func1();
}catch(err){
console.log("ERROR")
}
}
func2();
我有一个函数在try-catch-statement中的catch中引发错误。我想要它,如果func1抛出Error,它会被第一个try-catch-statement捕获,但是当我尝试它时,它不会被第一个语句捕获,它只是暂停代码并返回错误。我做错了什么?这是错误的方法吗?
答案 0 :(得分:1)
此代码应使您了解try/catch
块的工作方式。在第一个函数调用中,我们调用具有func2
块的try/catch
。您可以在控制台中看到已捕获错误,并且继续执行。然后我们调用func1
引发未捕获的错误,该错误在控制台中显示为错误。
function func1() {
console.log('func1...');
throw new Error('something bad happened!');
}
function func2() {
console.log('func2...');
try {
func1();
} catch (err) {
console.log('Caught error');
}
}
console.log('func2()');
func2();
console.log('func1()');
func1();
答案 1 :(得分:0)
不确定确切的位置,但这应该可以工作:
请确保您检查了您的真实控制台
function func1() {
try {
throw new Error('hi from func1')
} catch (err) {
throw err;
}
}
function func2() {
try {
func1();
} catch (err) {
// this doesn't work in stack snippets console
// hit f12 to see your real console
console.log('catched in func2', err)
}
}
func2();
答案 2 :(得分:0)
func1
中不需要单独的try / catch块,因为它已经在func2
的错误处理程序中。在这种情况下,您从func1
引发的任何错误都会被func2
function func1(){
throw new Error('oops');
}
function func2(){
try{
func1();
}catch(err){
alert(err.message);
}
}
func2();