Finalmente bloques que permiten, como desarrollador, para poner en orden después de ti mismo, independientemente de las acciones del código anterior en el bloque try {} que ha encontrado errores, y otros han señalado esto, se trata principalmente de liberar recursos: cerrar punteros/sockets/conjuntos de resultados, devolver conexiones a una piscina, etc.
@mats es muy correcto que siempre existe la posibilidad de fallos "duros" - finalmente se hace no deben incluir el código de misión crítica, que siempre debe hacerse de forma transaccional dentro del try {}
@mats nuevo - La verdadera belleza es que le permite lanzar excepciones de nuevo fuera de sus propios métodos, y todavía garantiza que poner en orden:
try
{
StreamReader stream = new StreamReader("foo.bar");
mySendSomethingToStream(stream);
}
catch(noSomethingToSendException e) {
//Swallow this
logger.error(e.getMessage());
}
catch(anotherTypeOfException e) {
//More serious, throw this one back
throw(e);
}
finally
{
stream.close();
}
por lo tanto, podemos coger muchos tipos de excepción, los procesan de forma diferente (el primero permite la ejecución para algo más allá del intento {}, el segundo regresa de manera efectiva), pero siempre limpia y ordenadamente claro.
Es posible que desee especificar un lenguaje de programación. El comportamiento variará según el idioma. –
Para decidir la mejor respuesta, creo que debe aclarar si los bloques try/catch están vacíos o no. Como se indica en una de las respuestas, la semántica es la misma si los bloques de prueba/captura están vacíos, de lo contrario, las respuestas diferentes abordarán las diferencias semánticas. – Kasper
Estoy de acuerdo con los comentarios anteriores, necesita aclarar el lenguaje real y revisar seriamente las respuestas dadas. Las respuestas upmodded son incorrectas o incompletas. –