2011-08-22 28 views
22

Cuando estoy desarrollando una aplicación web normal con JavaScript, generalmente no se necesita la declaración try/catch. No hay checked exception, File IO o conexión de base de datos en JavaScript.¿Cuándo debería usar try/catch en JavaScript?

Es try/catch declaración útil en JavaScript? ¿Cuándo puedo usarlo?

+0

'No hay archivo IO o conexión de base de datos en JavaScript.' Node.js de hecho los admite, aunque no requiere que uses 'try/catch'. – pimvdb

Respuesta

8

Úselo cada vez que el código que está ejecutando pueda arrojar una excepción. Recuerde que puede throw sus propios errores: la mayoría de las cosas que utilizo para try…catch son para detectar mis propias excepciones.

19

try...catch Generalmente, se recomienda utilizar menos bloques, y esto no depende del idioma que utilice.

La razón principal de esto es el costo de los bloques catch. También otra razón es que, cuando ajusta muchas sentencias con un solo bloque try...catch, en el bloque catch no puede estar seguro de cuál fue exactamente el problema principal.

Es mejor utilizar técnicas como validation o if...else bloques para reducir la probabilidad de que ocurra una excepción (error). Por ejemplo, cuando se quiere trabajar con un número que se toma de usuario, en lugar de utilizar try...catch, puede utilizar:

if (isNaN(numberVariable)) 
{ 
    alert('you should enter a valid number'); 
} 
4

bibliotecas y widgets JavaScript externos a menudo hacen uso de excepciones para los errores de instancias. Es común que tenga que:

try { 
    var w = new Widget(); 
} 
catch (e) { 
    // widget failed 
} 
1

Bueno, yo personalmente (mal?) Lo utilizan, cuando escribo algo de código, que no estoy seguro va a ejecutar correctamente, pero el usuario no necesita saber acerca de la error.

Aparte de eso, he estado usando en algunos controles de usuario, a la que puede definir una propiedad de 'acción' en su marcado HTML, JavaScript y la trataré de ejecutar esa acción, así:

try{ 
    window['method'](args); 
}catch(e){ 
    try{ 
     window['optionalExceptionHandler'](e, args); 
    }catch(e){ return; } 
} 

(me gusta pensar que es mejor que eval() xD)

13

un escenario me parece try/catch/finally es útil con objetos muy anidadas en un nulo pueden aparecer en cualquier nivel. Por ejemplo, considere esto:

var something = one.two.three.four.five; 

para realizar este "llegar" con 100% de seguridad se tendría que escribir un poco de código detallado:

if(one && one.two && one.two.three && one.two.three.four) 
    something = one.two.three.four.five; 

Ahora imaginemos los nombres de las variables son realistas y ya y rápidamente obtienes un código muy feo si es una declaración.

tiendo a usar try/catch/finally para simplificar esto cuando no se preocupan por ningún escenario "else" y sólo quiere el objeto o no:

var something; 
try { something = one.two.three.four.five; } 
catch { something = "default"; } 
finally { doSomething(something); } 
13

he encontrado esto de un post here:

¿Cuándo debes usar try-catch?

La sentencia try-catch debe usarse en cualquier momento que desee ocultar los errores del usuario, o en cualquier momento usted quiere producir errores personalizados para el beneficio de los usuarios. Si todavía no lo ha descubierto, cuando ejecute una instrucción try-catch, se desactivará el mecanismo habitual de manejo de errores del navegador.

Probablemente pueda ver los posibles beneficios al crear aplicaciones de gran tamaño. La depuración de todas las circunstancias posibles en el flujo de cualquier aplicación a menudo lleva mucho tiempo, y muchas de las posibilidades podrían pasar inadvertidas. Por supuesto, con una prueba de errores adecuada, no se debe pasar por alto ningún área. Pero la declaración try-catch funciona como una buena alternativa en áreas de su código que podrían fallar en circunstancias inusuales que no fueron previstas durante el desarrollo.

Otro beneficio proporcionado por la declaración try-catch es que oculta los mensajes de error excesivamente técnicos de los usuarios que de todos modos no los entenderían.

El mejor momento para utilizar try-catch es en partes de su código donde sospeche que se producirán errores que escapan a su control, por cualquier motivo.

¿Cuándo se debe evitar try-catch?

Usted no debe utilizar la instrucción try-catch si sabes un error va a ocurrir, porque en este caso que se quiere depurar el problema, no enmascararlo. La instrucción try-catch debe ejecutarse solo en secciones de código donde sospeche que pueden ocurrir errores, y debido a la gran cantidad de circunstancias posibles, no puede verificar completamente si se producirá un error o cuándo lo hará. En este último caso, sería apropiado usar try-catch.

Cuestiones relacionadas