在“ try”块中引发的Java异常无法在“ try ... catch”之外捕获

时间:2020-03-20 20:04:47

标签: java exception try-catch

我正在使用自己的个性化Java异常DaoException(从java.lang.Exception继承),该异常被扔到方法内部的try块中。问题是,尽管我只捕获了其他类型的异常(例如java.sql.SQLException),但DaoException似乎也无法脱离该块。当我在其他地方使用我的方法时,我无法捕获我的DaoException,就好像它从未被抛出过一样。

我没有编译或执行错误,所以我很困惑,尤其是因为将我的DaoException抛出try块之外时,它可以正常工作。

我找不到遇到相同问题的任何人,所以我真的希望在这里找到帮助。

这是我的方法的结构:

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 个答案:

答案 0 :(得分:4)

您的finally块中有退货。这意味着您会在发生异常时将其丢弃,以便可以返回。

如果您希望异常继续存在,请不要在finally块中返回。