我正在使用自己的个性化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);
}
}
答案 0 :(得分:4)
您的finally
块中有退货。这意味着您会在发生异常时将其丢弃,以便可以返回。
如果您希望异常继续存在,请不要在finally
块中返回。