问题描述
- 在java中一个方法抛两个异常会怎样
-
在一个java方法中同时用throw和throws抛出异常。会有不良的影响么。会不会有一个一个异常抛不出去的情况发生啊?求大神帮帮忙
解决方案
他俩用的地方不一样,throws是写在方法后面,其他地方调用时,要捕获,throw是在方法内直接抛出,可以一起用throw触发了,估计就到不了throws的捕获了,看你具体怎样用的
解决方案二:
方法声明时可以抛出异常,但是并不代表调用这个方法时会发生异常。
测试要构造异常条件才能走入异常分支的啊。例如:
import java.util.ArrayList;
import java.util.List;
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());
}
}
}
测试一下就知道构造了三种测试用例,走入三种不同流程的。-
时间: 2024-10-04 00:46:26