Javascript 尝试/投掷/接球时突破
我试图使用try/throw/catch在console.log()中以正确的方式显示格式化的错误。如果我使用此代码: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
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放在另一个函数中。如果仍然困惑,请参见示例。