(Cómo) ¿es posible capturar una excepción en un comunicado operador ternario de Java?

workerjoe:

Estoy cambio de formato algo de código legado que no entiendo plenamente, y en ella hay varias asignaciones de variables que las variables condicionalmente asignar a la salida de una de las dos funciones de formato, utilizando la captura de excepción de este modo:

String myString;
try {
    myString= foo(x);
} catch (Exception e) {
    myString= bar(x);
}

Esto parece como un abuso de manejo de excepciones, y en cualquier caso se trata de una gran cantidad de código repetitivo repetida de una gran cantidad de asignaciones de variables. Sin excavar en fooidentificar las condiciones que pueden causar excepciones, puedo simplificar esto utilizando una expresión operador ternario? Es decir algo como esto:

String myString = foo(x) ? foo(x) : bar(x)

pero agarrar la excepción que podrían ser lanzados por foo(x). ¿Hay una manera de hacer esto en esta sola línea? O si no, ¿hay una mejor expresión de una línea que elige entre dos asignaciones basadas en una posible excepción? Estoy usando Java 8.

Bernhard Josefo:

Toallita respuesta ya está claro. Sólo quiero añadir un poco a pesar de su declaración:

se trata de una gran cantidad de código repetitivo repetida de una gran cantidad de asignaciones de variables.

Si no desea asignar una variable en repetidas ocasiones, puede crear un nuevo método para devolver Stringel valor de la siguiente manera:

String myString = assign(x);

String assign(String x) {
    try {
        return foo(x);
    } catch (Exception e) {
        return bar(x);
    }
}

Sólo es necesario asignar la variable de una vez con el método anterior.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=223654&siteId=1
Recomendado
Clasificación