0 votos

Hola , quisiera que el programa al tirar una excepción no corte la ejecución y siga.Como se haría eso teniendo  un try y catch ?

Se sacaria la excepción ?

por ejemplo :

public ScrollResponse<Prediction> getSitePredictionsScroll(String site, Target target) throws ApiException{
        try {
            AndQueryBuilder builder = QueryBuilders.and(
                QueryBuilders.eq("target", target.asKey()),
                QueryBuilders.eq("route.site_id", site));

            ScrollResponse<Prediction> scrollResponse = dsClient.scrollBuilder()
                    .withSize(1000)
                    .withQuery(builder)
                    .execute(Prediction.class);

            return scrollResponse;

        } catch (Exception e) {
            DatadogFuryMetricCollector.INSTANCE.incrementCounter("shipping_delorean_get_site_predictions_scroll_ds");
            logger.error(String.format("[metric:shipping_scroll_ds] - Exception getting all Deviations from DS - Error: %s - Trace: %s", e.getMessage(), org.apache.commons.lang3.exception.ExceptionUtils.getStackTrace(e)));
            throw new ApiException("internal_error", "Exception getting all Predictions from DS", e);
        }
    }
}

 

por hace en Java

1 Respuesta

0 votos

En el código de tu ejemplo, cuando se lanza una excepción en el try es capturada con catch (donde continuaría el código), pero ahí lanzas con throw una nueva excepción ApiException y que es lanzada hacia fuera del método con throws.

Si quieres que no de error la aplicación, puedes no lanzar el error dentro del método (o capturarlo con un try/catch más externo) o ejecutar el método ScrollResponse capturando su excepción (fuera del método). Para este último puedes poner algo así:

try {
    ScrollResponse<Prediction> variable = getSitePredictionsScroll(...);
} catch (ApiException e) {
    // Hacer algo con la captura de la excepción...
}

Si quieres entender como funcionan las excepciones, tienes la explicación en vídeo sobre try/catch (es de Python pero las excepciones funcionan exactamente igual y lo que se da en el vídeo es la idea) en: https://jarroba.com/curso-de-python-7-excepciones/

por hace