try todas tipos solo propagacion personalizadas mas manejo letras las excepciones ejemplos comunes catch java try-catch-finally

todas - try catch java netbeans



¿Cómo puedo romper un bloque try/catch sin lanzar una excepción en Java? (7)

Necesito una forma de romper desde el medio del bloque try / catch sin lanzar una excepción. Algo que es similar a la ruptura y continúa en los bucles. es posible?

He estado recibiendo información extraña acerca de lanzar una excepción personalizada (nombrándolo "BreakContinueException") que simplemente no hace nada en su controlador de captura. Estoy seguro de que esto es muy retorcido.

Entonces, ¿alguna solución directa que no conozco?


¿qué tal el return que hará, si no hay finally


En esta muestra en el bloque catch, cambio el valor de contador y se romperá en el bloque:

class TestBreak { public static void main(String[] a) { int counter = 0; while(counter<5) { try { counter++; int x = counter/0; } catch(Exception e) { counter = 1000; } } } }k


Este es el código que suelo hacer:

try { ........... throw null;//this line just works like a ''break'' ........... } catch (NullReferenceException) { } catch (System.Exception ex) { ......... }


Hay varias formas de hacerlo:

  1. Mueve el código a un nuevo método y return de él.

  2. Envuelve el try / catch en un do{}while(false); lazo.


La forma correcta de hacerlo es probablemente desglosar el método poniendo el bloque try-catch en un método separado y usar una declaración de retorno

public void someMethod() { try { ... if (condition) return; ... } catch (SomeException e) { ... } }

Si el código incluye muchas variables locales, también puede considerar usar una break de un bloque etiquetado, como sugiere Stephen C :

label: try { ... if (condition) break label; ... } catch (SomeException e) { ... }


Siempre puede hacerlo con una break de una construcción de bucle o una break etiquetada como se especifica en la respuesta de aioobies.

public static void main(String[] args) { do { try { // code.. if (condition) break; // more code... } catch (Exception e) { } } while (false); }


Varias maneras:

  • return
  • break o continue cuando en un bucle
  • break en la etiqueta cuando se encuentra en una declaración etiquetada (ver el ejemplo de @ aioobe)
  • break cuando en una instrucción de cambio.

...

  • System.exit() ... aunque eso probablemente no es lo que quieres decir.

En mi opinión, "romper con la etiqueta" es la forma más natural (menos contorsionada) de hacer esto si solo desea salir de un try / catch. Pero podría ser confuso para los programadores novatos de Java que nunca se han encontrado con esa construcción Java.

Pero mientras que las etiquetas son oscuras, en mi opinión, encerrar el código en un do ... while (false) para que puedas usar un break es una idea peor. Esto confundirá tanto a los no novatos como a los novatos. Es mejor que los principiantes (y los que no lo son) aprendan sobre las declaraciones etiquetadas.

Por cierto, el return funciona en el caso de que necesites romper con un finally . Pero debe evitar hacer una return en un bloque finally porque la semántica es un poco confusa y puede causarle al lector un dolor de cabeza.