Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试/投掷/接球时突破_Javascript_Try Catch_Throw - Fatal编程技术网

Javascript 尝试/投掷/接球时突破

Javascript 尝试/投掷/接球时突破,javascript,try-catch,throw,Javascript,Try Catch,Throw,我试图使用try/throw/catch在console.log()中以正确的方式显示格式化的错误。如果我使用此代码: var add = function ( a, b ) { try { if ( typeof a !== 'number' || typeof b !== 'number' ) throw { name: 'TypeError!\n', message: 'You must enter two numbe

我试图使用try/throw/catch在console.log()中以正确的方式显示格式化的错误。如果我使用此代码:

var add = function ( a, b ) {
    try {
        if ( typeof a !== 'number' || typeof b !== 'number' ) throw {
            name: 'TypeError!\n',
            message: 'You must enter two numbers'
        }
    } catch ( e ) {
        console.log( e.name + e.message );
    }
    return a + b;
}
console.log( add( 3, undefined ) );
我的控制台显示:

TypeError!
You must use two numbers as parameters
NaN
在本例中,如何中断函数以仅获取控制台日志中的错误而不获取结果?我尝试在控制台登录到catch内部后使用break语句,但控制台说:

Uncaught SyntaxError: Illegal break statement

只能在循环中使用
break
,应该使用return从函数返回。您还可以选择不捕获异常,并让它流回调用方

一个例子:

var add = function ( a, b ) {
    if ( typeof a !== 'number' || typeof b !== 'number' ) throw {
        name: 'TypeError!\n',
        message: 'You must enter two numbers'
    }
    return a + b;
}

try {
    console.log( add( 3, undefined ) );
} catch ( e ) {
    console.log( e.name + e.message );
}

只能在循环中使用
break
,应该使用return从函数返回。您还可以选择不捕获异常,并让它流回调用方

一个例子:

var add = function ( a, b ) {
    if ( typeof a !== 'number' || typeof b !== 'number' ) throw {
        name: 'TypeError!\n',
        message: 'You must enter two numbers'
    }
    return a + b;
}

try {
    console.log( add( 3, undefined ) );
} catch ( e ) {
    console.log( e.name + e.message );
}

好的,对不起!很明显为什么我不能使用break语句。但是,如果在内部使用return,则会捕获控制台return
类型错误!必须使用两个数字作为未定义的参数,所以在控制台日志上打印也未定义,因为return语句总是返回一个值。我只想打印错误而不打印其他内容。而且,我如何选择不捕获异常?我必须总是在尝试后使用catch或finally。不必吗?不要在该函数中使用try-and-catch,您可以在该函数中保留throw,但将try-and-catch放在另一个函数中。如果仍然困惑,请参见示例。好的,我很抱歉!很明显为什么我不能使用break语句。但是,如果在内部使用return,则会捕获控制台return
类型错误!必须使用两个数字作为未定义的参数,所以在控制台日志上打印也未定义,因为return语句总是返回一个值。我只想打印错误而不打印其他内容。而且,我如何选择不捕获异常?我必须总是在尝试后使用catch或finally。不必吗?不要在该函数中使用try-and-catch,您可以在该函数中保留throw,但将try-and-catch放在另一个函数中。如果仍然困惑,请参见示例。