设置
所以我有两个例外:
ProfileException extends Exception
UserException extends Exception
我的一个帮助器类方法抛出这两个异常togeather:
Long getSomething() throes ProfileException, UserException
我在这样的try catch块中调用此方法。
try
{
Long result = helperObj.getSomething();
}
catch(ProfileException pEx)
{
//Handle profile exception
}
catch(UserException uEx)
{
//Handle user exception
}
问题
但是我收到以下错误。
Unreachable catch block for UserException. It is already handled by the catch block for ProfileException.
如何根据getSomething()方法抛出的异常类型单独区分和处理?
答案 0 :(得分:3)
此错误表示UserException扩展了ProfileException
答案 1 :(得分:1)
由于两个例外都在层次结构中处于同一级别,因此您必须使用以下
try {
Long result = helperObj.getSomething();
}
catch(Exception ex) {
if (ex instanceOf ProfileException) {
//Handle profile exception
} else if (ex instanceOf UserException) {
// Handle user exception
}
}
答案 2 :(得分:0)
我确信UserException
可能是extends ProfileException
。如果您对其进行了修改,则IDE可能未编译最新版本(例如,因为发生了编译器错误)。因此,您可以运行clean和build命令(在大多数流行的IDE中都可用)。
您可以通过交换catch
块来解决问题:
try {
Long result = helperObj.getSomething();
} catch(UserException uEx) {
//Handle user exception
} catch(ProfileException pEx) {
//Handle profile exception
}
然而,大多数IDE总会将特定类型的catch
块写入更一般的类型,以防止此类死代码。