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); } } }
看一下。。。。异常信息