Java有异常抛出后,跳出程序,一般无法执行接下来的代码。
大家做登陆功能,经常会有用户名和密码的登陆校验,用户名或者密码错误,如果一般是提示用户名或者密码错误,因为一般无法同时抛出两个异常信息。我们如何来做到同时抛出多个异常呢? 可以把多个异常信息放到list中,然后一起抛出即可。
我们接下来定义自己的异常类。
import java.util.ArrayList;
import java.util.List;
/**
* 自定义异常类
*
* @author gm
*/
public class MyException extends Exception {
/**
* 序列化ID
*/
private static final long serialVersionUID = 1L;
/**
* 用于报错多个异常
*/
private List<Throwable> causes = new ArrayList<Throwable>();
/**
* 构造函数添加所有异常
*
* @param _causes
*/
public MyException(List<? extends Throwable> _causes) {
causes.addAll(_causes);
}
/**
* 获取所有Exceptions
*
* @return List<Throwable>
*/
public List<Throwable> getException() {
return causes;
}
}
------------------------------------------------------------------------
异常类定义好后,同时抛出两个异常。
import java.util.ArrayList;
import java.util.List;
public class ExcepitonTest {
public static void main(String[] args) throws MyException {
try {
doException();
} catch (MyException e) {
e.printStackTrace();
throw new MyException(e.getException());
}
}
public static void doException() throws MyException {
List<Throwable> list = new ArrayList<Throwable>();
int num1 = 1;
int num2 = 0;
int result = 0;
try {
result = num1 / num2;
} catch (Exception e) {
list.add(e);
System.out.println("第一个异常");
}
try {
result = num1 / num2;
} catch (Exception e) {
list.add(e);
System.out.println("第二个异常");
}
if (list.size() > 0) {
throw new MyException(list);
}
}
}
看一下。。。。异常信息