Exception can be handled when thrown in a method by either passing through the Exception or handling it. Excepción pueden ser manipulados cuando arrojados a un método por cualquiera que pase por la excepción o la manipulación. However in a static code block how can you handle checked exceptions meaningfully? Sin embargo en un bloque de código estático ¿cómo se puede manejar de manera significativa comprobado excepciones?

Normally static blocks are used to execute a code only once globally (for all instances of the class). Normalmente estática bloques se usan para ejecutar un código sólo una vez a nivel mundial (por todas las instancias de la clase). A popular example is loading the JDBC driver. Un ejemplo popular es la carga controlador JDBC. Sometimes the code in static block throws checked Exceptions which needs to be handled. A veces el código estático en bloque arroja excepciones comprobado que las necesidades para ser manipulados. Simple try-catch block doesn’t do justice to the problem as normally failure in static code block means the program cannot continue. Simple intentar la captura incidental de bloque no hace justicia al problema puesto que normalmente el fracaso en bloque de código estático significa que el programa no puede continuar.

A clean way to handle it is using a try-catch block. However after logging appropriate error messages you should throw a RuntimeException. Una forma limpia de manejar es mediante una prueba de captura bloque. Sin embargo, tras la tala adecuada los mensajes de error que debería lanzar una RuntimeException. The normally ends the program execution. El general, finaliza la ejecución del programa.

Update: After logging the exception you have two options. Actualización: Después de la tala la excepción tiene dos opciones. You can either throw a RuntimeException which will end the current thread (unless caught by code instantiating / calling a static method on the class for the first time) or better yet you can call System.exit(1). Puede o bien lanzar una RuntimeException que pondrá fin a la actual hilo (a menos que sea sorprendido por el código instanciar / llamar a un método estático en la clase por primera vez) o mejor aún puede llamar a System.exit (1). RuntimeException will end a single threaded application[Laszlo] (exception noted above). RuntimeException pondrá fin a una única aplicación con hilos [Laszlo] (excepción se ha señalado anteriormente). In JDK 1.5 throwing RuntimeException from main thread gives a pretty descriptive message: En JDK 1,5 tirar RuntimeException de hilo principal da un mensaje bastante descriptivo:
Caused by: java.lang.RuntimeException: Error! Causados por: java.lang.RuntimeException: Error!
at TestStaticException. a TestStaticException. (TestStaticException.java:3) (TestStaticException.java: 3)

At this point it may be argued that System.exit(1) is not desirable in a managed environment like a servlet and I agree. En este punto se puede afirmar que System.exit (1) no es deseable en un entorno administrado como un servlet y estoy de acuerdo. System.exit is for java applications and only if the static initializer block performs some critical (without which the program cannot be run successfully) function like loading the database driver. System.exit es para aplicaciones java y sólo si el bloque static initializer realiza algunas críticas (sin la cual el programa no puede ser ejecutado con éxito) la función de carga como el conductor de bases de datos. RuntimeException may be consumed in a managed environment. RuntimeException puede ser consumida en un entorno administrado. So a third option is to set a flag indicating failure. Por lo tanto, una tercera opción es establecer una bandera que indica fracaso. Later the constructors can check the flag and throw exceptions [Robert] or retry in rare cases. Más tarde, los constructores pueden comprobar la bandera y lanzar excepciones [Robert] o vuelve a intentarlo dentro de pocos casos.

If the operation is not important to the functioning of the program (like setting fonts or laf) then maybe a simple log entry is all that is required. Si la operación no es importante para el funcionamiento del programa (como el establecimiento de tipos de letra o laf), entonces tal vez un simple registro de entrada es todo lo que se requiere.