Istnieje metoda get(sql)
(nie mogę jej zmodyfikować). Ta metoda zwraca MyObjects i musi znajdować się w bloku catch catch, ponieważ jest tam możliwe JqlParseException
. Mój kod to:Zgłaszanie wyjątków opcjonalnie w języku Java8
String sql = something;
try{
MyObject object = get(sql);
} catch(JqlParseException e){
e.printStackTrace();
} catch(RuntimeException e){
e.printStackTrace();
}
Chcę usunąć try catch i używać Optional
klasę, próbowałem:
MyObject object = Optional.ofNullable(get(sql)).orElseThrow(RuntimeException::new);
ale siła nie IDE spróbować złapać zbyt. I:
MyObject object = Optional.ofNullable(get(sql)).orElseThrow(JqlParseException::new));
jest błąd (w IDE) The type JqlParseException does not define JqlParseException() that is applicable
. Czy jest jakiś sposób na uniknięcie bloków catch i użycie opcji opcjonalnej?
Przejdź do definicji 'get', zobacz, czy jest napisane' throws JqlException'. Jeśli tak, musisz użyć try ... catch. – Sweeper
Wygląda na to, że całkiem sporo osób rozważa Opcjonalnie jako konstrukcję sterowania przepływem NextGeneration ™. To się nie wydarzy. Opcjonalne, jak również jego prymitywne odpowiedniki, z natury rzeczy nie są w stanie sprostać temu zadaniu. Nie jest przeznaczony do całkowitego zastąpienia konstrukcji sterujących przepływem, takich jak if-else lub try-catch. Zamiast tego skupia się na pozbyciu się tych niekończących się czeków zerowych. – glee8e
@ glee8e * ["Opcjonalnie"] koncentruje się na pozbyciu się niekończących się kontroli zerowych. * Byłbym bardziej konkretny. Wielu ludzi doszedłoby do wniosku, że powinni zastąpić wszystkie wystąpienia 'null' opcją' Opcjonalnie', co jest sprzeczne z intencją projektantów 'Opcjonalnych'. – Jubobs