我有一个带有大约20个方法的类,这些方法都捕获1个或多个异常,然后根据该异常响应用户。我不想创建一遍又一遍的方法,而是要创建一个方法,该方法将传递给Exception,对其进行处理并给出适当的响应。
这是一个例子
public boolean addFirst(Object data){
try {
//add something
return true;
} catch(Exception e) {
exceptionHandler(e);
return false;
}
}
但是,当我尝试将其与“ e”进行比较时,它给了我“ 无法将异常解析为变量”。
private void exceptionHandler(Exception e) {
if(e == UnsupportedOperationException) {
System.out.println("Operation is not supported.");
} else if (e == ClassCastException) {
System.out.println("Class of the specified element prevents it from being added to this list.");
} else if (e == NullPointerException) {
System.out.println("You cannot enter nothing.");
} else if (e == IndexOutOfBoundsException) {
System.out.println("Your specified index is larger than the size of the LinkedList. Please choose a lower value.");
} else if(e == Exception) {
System.out.println("You messed up so hard that I don't even know what you did wrong.");
}
}
问题来源:Stack Overflow
例如UnsupportedOperationException
,不是声明的变量,这就是编译器抱怨的内容。
执行此操作时,e == UnsupportedOperationException
您正在检查的引用是否e等于的引用,UnsupportedOperationException
但UnsupportedOperationException
从未声明过。
要检查对象的类型,必须使用instanceof关键字和class要检查的对象。
e instanceof UnsupportedOperationException
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。