Как узнать, какие исключения будут брошены в метод? - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть этот код и обработка этого исключения. Как выяснить все возможные исключения и будут обработаны? моя обработка не правильная? Я думаю о SQLException, NullPointer-et c. Мне нужно найти максимальное количество по годам из 3 таблиц. Какие исключения могут быть?

public Integer getMaxNumberByYear(String year){

        String queryStr = "SELECT MAX(trip_card_number)\n" +
                "  FROM (SELECT trip_card_number FROM employee_trip_cards\n" +
                "        WHERE EXTRACT(YEAR FROM card_Issue_Date) = '" + year + "'\n" +
                "        UNION ALL\n" +
                "        SELECT trip_card_number FROM postgraduate_trip_cards\n" +
                "        WHERE EXTRACT(YEAR FROM card_Issue_Date) = '" + year + "'\n" +
                "        UNION ALL\n" +
                "        SELECT trip_card_number FROM students_trip_cards \n" +
                "        WHERE EXTRACT(YEAR FROM card_Issue_Date) = '" + year + "'\n" +
                "        )";

        try {

            Integer result = ((BigDecimal) getSessionFactory().getCurrentSession().createSQLQuery(queryStr).uniqueResult()).intValue();

            if (result==null){
                throw new NullPointerException("Can't find the maximum");
            }

            return result;

        } catch (NullPointerException e){
            e.printStackTrace();
            Utils.getSystemLogger().log(e);
            return 0;
        }

    }

1 Ответ

1 голос
/ 10 февраля 2020

Во-первых, нет необходимости генерировать исключение NullPointerException, а затем перехватывать его тем же методом. То, что вы написали, похоже на обработку logi c с исключениями, что не очень хорошо. Попробуйте написать:

    if (result==null){
       Utils.getSystemLogger().log("Can't find the maximum");
       return 0;
    } 
    return result;

, если 0 - допустимое возвращаемое значение для метода, или иначе не перехватывайте исключение.

Вам не нужно думать заранее и находить все возможные исключения. Если вы еще не знаете возможных исключений, вы также не знаете, как восстановить их, поэтому лучше разрешить их выбрасывание и отладку позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...