intente {Bloquear} declaración de captura
try catch
La declaración primero ejecutará el bloque de código envuelto por try, y juzgará si ingresar catch
el bloque de código de acuerdo con el resultado de la ejecución del bloque de código.
- Si
catch
el bloque de código también lanza una excepción, anularátry
la excepción lanzada en la declaración
function test (){
try {
throw new Error('error1');
} catch (e) {
throw new Error('error2');
}
}
- Si el bloque de código tiene un resultado devuelto, el resultado de la ejecución de la declaración
catch
se sobrescribirá cuando se produzca una excepción .try
De lo contrario,Block
devuelve undefined porque se lanza una excepción. yo
function test (){
try {
return 0
} catch (e) {
return 1
}
}
test() // 0
function test1 (){
try {
throw new Error()
return 0 // 这里不会执行到
} catch (e) {
return 1
}
}
test1() //1
intente {Bloquear} -finalmente declaración
- Si
finally
el bloque de código también lanza una excepción, anularátry
la excepción lanzada en la declaración
function test (){
try {
throw new Error('error1');
} finally {
throw new Error('error2');
}
}
test() //'error2'
try
finally
El código envuelto con y se ejecutará en secuencia, y se registrarán al mismo tiempo los resultados devueltos B y F. Si F tiene un valor de retorno (retorno normal o anormal), se devolverá el resultado de F, de lo contrario, el resultado de B será devuelto
function test (){
try {
throw new Error()
} finally {
return 1
}
}
test() // 1
function test2 (){
try {
return 0
} finally {
}
}
test2() // 0
function test3 (){
try {
return 0
} finally {
return 1
}
}
test3() // 1
intente {Block} declaración catch -finally
Es equivalente a la ejecución combinada de Try Catch y Try finalmente, primero ejecute el resultado del procesamiento de Try Catch y luego fusione el resultado con finalmente, la excepción en finalmente cubrirá la excepción y regresará en Try/Catch.
function test() {
var a = 1;
try {
return a;
} finally {
++a;
}
}
test() // 1
function test1() {
var a = 1;
try {
return a;
} finally {
++a;
return a;
}
}
test1() // 2
function test2() {
var obj = {a:1};
try {
return obj;
} finally {
++obj.a;
}
}
test2().a // 2
function test3() {
var obj = {a:1};
try {
return obj.a;
} finally {
++obj.a;
}
}
test1() // 1
Resumir:
catch
las excepcionestry
anulan las excepciones para yreturn
catch
return
La excepción de anulacióntry
yreturn
finally
La excepción detry/catch
anula la excepción de yreturn
finally
return
La excepción de anulacióntry/catch
yreturn
try/catch/finally
El código en oreturn
después no se ejecutará