Java исключение, выданное в блоке "try", не может быть поймано вне "try ... catch" - PullRequest
0 голосов
/ 20 марта 2020

Я использую свое собственное java исключение DaoException (унаследованное от java .lang.Exception), которое я выбрасываю внутри блока try внутри метода. Проблема в том, что хотя я ловлю только другие типы исключений (например, java. sql .SQLException), похоже, что DaoException также не может выйти за пределы блока. Когда я использую свой метод в другом месте, я не могу поймать свое DaoException, как если бы оно никогда не было выброшено.

У меня нет ошибок компиляции или выполнения, поэтому я совершенно сбит с толку, особенно потому, что когда я выкидываю свое DaoException вне попытки Блок, он работает нормально.

Я не смог найти никого, у кого была такая же проблема, поэтому я действительно надеюсь найти некоторую помощь здесь.

Вот структура моего метода:

public Member getById(int id) throws DaoException
{
    ...
    try
    {
        ...
        if (id<0){
           throw new DaoException("Indice de membre invalide");}
        ...
    }
    catch(SQLException e)
    {
        throw new DaoException("[SQLException]"+e.getLocalizedMessage());   
    }
    finally
    {
        return member;
    }
}

А вот мое исключение DaoException, которое довольно основательно:

public class DaoException extends Exception
{
    public DaoException(String message)
    {
        super(message);
    }
}

1 Ответ

4 голосов
/ 20 марта 2020

У вас есть возврат в вашем блоке finally. Это означает, что вы выбрасываете исключение, когда это происходит, и вы можете вместо этого вернуться.

Если вы хотите, чтобы исключение сохранилось, не возвращайтесь в блок finally.

...