程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java自定義異常類

Java自定義異常類

編輯:關於JAVA

自定義異常:步驟 ­

一:創建一個類繼承於Throwable或其子類;

二:添加構造方法;

三:在一個方法中使用throw拋出異常;

四:在另一個方法中捕獲並處理異常。

示例:

一、繼承Exception類

Java代碼

  1. public class MyFirstException extends Exception {
  2. public MyFirstException() {
  3. super();
  4. }
  5. public MyFirstException(String msg) {
  6. super(msg);
  7. }
  8. public MyFirstException(String msg, Throwable cause) {
  9. super(msg, cause);
  10. }
  11. public MyFirstException(Throwable cause) {
  12. super(cause);
  13. }
  14. //自定義異常類的主要作用是區分異常發生的位置,當用戶遇到異常時,
  15. //根據異常名就可以知道哪裡有異常,根據異常提示信息進行修改。
  16. }

二、 繼承Throwable 類

Java代碼

  1. public class MySecondException extends Throwable {
  2. public MySecondException() {
  3. super();
  4. }
  5. public MySecondException(String msg) {
  6. super(msg);
  7. }
  8. public MySecondException(String msg, Throwable cause) {
  9. super(msg, cause);
  10. }
  11. public MySecondException(Throwable cause) {
  12. super(cause);
  13. }
  14. }

三、測試

Java代碼

  1. /**
  2. * 自定義異常類的使用
  3. * @author new
  4. *
  5. */
  6. public class TestMyException {
  7. public static void firstException() throws MyFirstException{
  8. throw new MyFirstException("\"firstException()\" method occurs an exception!");
  9. }
  10. public static void secondException() throws MySecondException{
  11. throw new MySecondException("\"secondException()\" method occurs an exception!");
  12. }
  13. public static void main(String[] args) {
  14. try {
  15. TestMyException.firstException();
  16. TestMyException.secondException();
  17. } catch (MyFirstException e1){
  18. System.out.println("Exception: " + e1.getMessage());
  19. e1.printStackTrace();
  20. } catch (MySecondException e2){
  21. System.out.println("Exception: " + e2.getMessage());
  22. e2.printStackTrace();
  23. }
  24. //當一個try塊後面跟著多個catch塊時,如果發生的異常匹配第一個catch塊的參數,便將異常處理權利交給第一個catch塊。
  25. //如果發生的異常與第一個catch塊不匹配,便看是否與第二個catch塊匹配,依次下去,如果到最後依然無法匹配該異常,
  26. //便需要在方法聲明中添加一條throw語句,將該異常拋出。
  27. //因此,在有多個catch塊,而且每次處理的異常類型具有繼承關系時,應該首先catch子類異常,再catch父類異常。
  28. //比如,如果MySecondException繼承MyFirstException,那麼最好將catch(MySecondException e2)放在前面
  29. //把catch (MyFirstException e1)放在後面。
  30. }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved