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:
Mueve el código a un nuevo método y
return
de él.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
ocontinue
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.