Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

241
Visualizações
Lanzar excepción en opcional en Java8

Hay un método get(sql) (no puedo modificarlo). Este método devuelve MyObjects y tiene que estar en el bloque try catch porque JqlParseException es posible allí. mi código es:

 String sql = something; try{ MyObject object = get(sql); } catch(JqlParseException e){ e.printStackTrace(); } catch(RuntimeException e){ e.printStackTrace(); }

Quiero eliminar try catch y usar la clase Optional , probé:

 MyObject object = Optional.ofNullable(get(sql)).orElseThrow(RuntimeException::new);

pero la fuerza IDE allí intenta atrapar también. Y para:

 MyObject object = Optional.ofNullable(get(sql)).orElseThrow(JqlParseException::new));

es un error (en IDE) The type JqlParseException does not define JqlParseException() that is applicable . ¿Hay alguna forma de evitar intentar atrapar bloques y usar opcional?

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Optional no tiene el propósito de tratar con excepciones, estaba destinado a tratar con posibles null sin interrumpir el flujo de su programa. Por ejemplo:

 myOptional.map(Integer::parseInt).orElseThrow(() -> new RuntimeException("No data!");

Esto omitirá automáticamente el paso del map si el opcional estaba vacío e irá directamente al paso de throw , un buen flujo de programa ininterrumpido.

Cuando escribes:

 myOptionalValue.orElseThrow(() -> new RuntimeException("Unavailable"));

... lo que realmente estás diciendo es: devuelve mi valor opcional, pero lanza una excepción si no está disponible.

Lo que parece querer es una forma de crear un opcional (que captura instantáneamente la excepción) y volverá a lanzar esa excepción cuando intente usar el opcional.

about 4 years ago · Santiago Trujillo Relatório

0

Así no es como funcionan los Opcionales. No hacen que los bloques try-catch sean obsoletos. Sin embargo, podría introducir una nueva función contenedora como esta:

 public Optional<MyObject> getMyObject(final String jql) { try { return Optional.ofNullable(get(sql)); } catch (final JqlParseException e) { return Optional.empty(); } }

Ya no tendrá que lidiar con la excepción, pero no sabrá si hubo un error si también obtiene un Opcional vacío.

about 4 years ago · Santiago Trujillo Relatório

0

Prueba esto

 Optional.ofNullable(result) .orElseThrow(() -> new GenericClientException("Request body is not valid", HttpStatus.BAD_REQUEST));
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda