在一个java方法中同时用throw和throws抛出异常。会有不良的影响么。会不会有一个一个异常抛不出去的情况发生啊?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
方法声明时可以抛出异常,但是并不代表调用这个方法时会发生异常。
测试要构造异常条件才能走入异常分支的啊。例如:
public class ExceptionTest {
/**
* 判断某个列表中,某个位置处的值是否是指定的字符串
* 可能抛出两种异常
* @param value
* @param list
* @param index
* @return
*/
public static boolean isTargetInCertainIndex(String value,List<String> list,int index)
throws IllegalArgumentException,IndexOutOfBoundsException {
if(value==null||list==null){
throw new IllegalArgumentException("date is null");
}
if(index>list.size()){
throw new IndexOutOfBoundsException("index is out of bounds");
}
boolean flag = false;
String data = list.get(index);
return value.equals(data);
}
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("I");
boolean flag = false;
//没有异常的测试
try {
flag = isTargetInCertainIndex("hello",list,0);
System.out.println("flag:"+flag);
} catch (Exception e) {
System.out.println(e.getMessage());
}
//一种异常的情况
try {
flag = isTargetInCertainIndex(null,list,0);
System.out.println("flag:"+flag);
} catch (Exception e) {
System.out.println(e.getMessage());
}
//另一种异常的情况
try {
flag = isTargetInCertainIndex("hello",list,4);
System.out.println("flag:"+flag);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
测试一下就知道构造了三种测试用例,走入三种不同流程的。