【JAVASE】Java同時丟擲多個異常
阿新 • • 發佈:2019-02-18
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); } } }
看一下。。。。異常資訊