Javascript 如何在一个函数中抛出错误以被另一个函数捕获?

Javascript 如何在一个函数中抛出错误以被另一个函数捕获?,javascript,error-handling,try-catch,Javascript,Error Handling,Try Catch,我有这个“测试”代码: 我有一个函数,它在try-catch语句中的catch中抛出一个错误。我希望它,如果func1抛出错误,它会被第一个try-catch语句捕获,但当我尝试此操作时,它不会被第一个语句捕获,它只是暂停代码并返回错误。我做错了什么?这是一种错误的方法吗?不确定你到底被困在哪里,但这应该可以: 确保你检查了你真正的控制台 函数func1(){ 试一试{ 抛出新错误('hi from func1') }捕捉(错误){ 犯错误; } } 函数func2(){ 试一试{ func1

我有这个“测试”代码:


我有一个函数,它在try-catch语句中的catch中抛出一个错误。我希望它,如果func1抛出错误,它会被第一个try-catch语句捕获,但当我尝试此操作时,它不会被第一个语句捕获,它只是暂停代码并返回错误。我做错了什么?这是一种错误的方法吗?

不确定你到底被困在哪里,但这应该可以:

确保你检查了你真正的控制台

函数func1(){
试一试{
抛出新错误('hi from func1')
}捕捉(错误){
犯错误;
}
}
函数func2(){
试一试{
func1();
}捕捉(错误){
//这在stack snippets控制台中不起作用
//点击f12查看您真正的控制台
console.log('在func2中捕获',错误)
}
}

func2()此代码应该让您了解
try/catch
块是如何工作的。在第一个函数调用中,我们调用
func2
,它有一个
try/catch
块。您可以在控制台中看到错误被捕获并继续执行。然后我们调用
func1
,它抛出一个未捕获的错误,该错误作为错误显示在控制台中

函数func1(){
console.log('func1…');
抛出新错误(“发生了不好的事情!”);
}
函数func2(){
log('func2…');
试一试{
func1();
}捕捉(错误){
log(“捕获错误”);
}
}
log('func2()');
func2();
log('func1()');

func1()
func1
中不需要单独的try/catch块,因为它已经在
func2
的错误处理程序中。在这种情况下,
func1
抛出的任何错误都将被
func2
自动捕获

函数func1(){
抛出新错误('oops');
}
函数func2(){
试一试{
func1();
}捕捉(错误){
警报(错误消息);
}
}

func2()您到底需要什么?从您的描述中不清楚您正在尝试做什么,哪些不起作用-您能否提供更多详细信息,也许可以使用一个可运行的示例?但是你那里的代码应该(假设一个错误是由
…stuff…
)首先在
func1
中捕获错误,提出一个新错误,然后在
func2
中捕获它@KrishnaPrashatt func1正在处理一些可能返回错误的操作,在这种情况下,我需要它返回到func2(调用func1的函数)并执行一些其他操作。如果是这种情况,为什么要对func1使用单个try/catch?由于您在func2的try块中执行func1,如果发生错误,它自然会转到func2的catch块,对吗?这是我当前正在做的,但它不是func2捕获错误,而是停止代码。它会抛出一个正常错误,就像没有另一个try-catch语句一样。再次抛出了什么类型的错误?某些错误将始终显示在控制台中。举个例子,我们猜不出你的代码:)@Sagivb.g我有一个类似的代码,就像你写的一样,我在第一个函数中使用了“throw err”并记录了错误,但是当我在func2中记录相同的错误时,它会抛出未定义的错误。你能在这里帮助我吗?这真的帮助了我。很难找到父函数中没有捕获错误的原因的答案。我回来了,现在扔了。非常感谢。
function func1(){
    try{
    ...stuff...
    }catch(err){
        throw new Error();
    }
}

function func2(){
    try{
        func1();
    }catch(err){
        console.log("ERROR")
    }
}

func2();