1. 程式人生 > 其它 >【Vue】樹狀節點介面 與 級聯選擇框元件

【Vue】樹狀節點介面 與 級聯選擇框元件

1,異常是什麼

    JVM 針對於程式碼執行過程中,出現的錯誤,異常資訊,打包之後丟擲到方法內部或者自行處理
在異常資訊中,需要給予開發者足夠的資訊提示,包括異常和錯誤的前因後果
    Java 中異常基類
        Throwable 類 Java 中所有異常和錯誤的基類,規定了基礎方法,和必要的構造方法形式
    Throwable 中有兩個子類
        Error      錯誤
        Exception  異常

2. Throwable 核心方法

構造方法相關:
    Throwable();
        建立 Throwable 物件, Throwable  物件中錯誤/異常資訊為 null
    異常資訊為 null
	Throwable(String message);	
		建立 Throwable 物件,Throwable 物件中錯誤/異常資訊為 message

成員方法相關:
	String toString();
    	獲取錯誤/異常的簡要資訊描述,包括出現錯誤/異常型別資訊。
    	例如:
    		java.lang.ArrayIndexOutOfBoundsException:10
	String getMessage();
		僅獲取當前錯誤/異常中儲存的異常資訊
	void printStackTrace();
		在控制檯展示錯誤的前因後果,紅色字型!!!
/*
 * Throwable 類
 * 程式碼中出現錯誤/異常 JVM會自動選擇建立對應型別的錯誤/異常
 */
public class Demo1 {
	public static void main(String[] args) {
		Throwable throwable = new Throwable("有啥別有病,沒啥別沒錢");
		
		// System.out.println("getMessage : " + throwable.getMessage());
		// System.out.println("toString : " + throwable.toString());
		// throwable.printStackTrace();
	
		test();
		
	}
	
	private static void test() {
		Throwable throwable = new Throwable("異常演示");
		
		throwable.printStackTrace();
	}
}

3. 異常和錯誤的區別

異常:
	Exception
	車小剮小蹭 異常,可以維修!!!
	車有大故障!!!街邊的修理廠,不行,修不了,你可以考慮去4S
		捕獲
		丟擲
錯誤:
	Error
		"720" 你的車在地下車庫三層,你的車距離水面以上有將近15米,泡了一個半月。
		車直接報廢!!!

最大區別就是錯誤和異常型別結尾單詞不同!!!

4.異常處理兩種形式

4.1捕獲異常
格式:
	try {
		// 有可能出現異常的程式碼 JVM會自動建立對應異常型別,同時提供必要的異常資訊
	} catch(異常型別物件1) {
		// 針對當前異常型別的處理方式
	} catch(異常型別物件2) {
		// 針對當前異常型別的處理方式
	}
	
	try {
	
	} catch() {
	
	} finally {
	
	}

/*
 * 檔案操作演示異常問題
 * 
 * FileNotFoundException 檔案未找到!!!
 */
public class Demo2 {
	public static void main(String[] args) {
		
		try {
			/*
			 * Unhandled exception type FileNotFoundException 
			 * 未處理異常,異常型別為 FileNotFoundException 檔案未找到異常
			 * 
			 * Ctrl + 1 快速修復
			 * 		surround with try/catch
			 */
			FileInputStream fis = new FileInputStream("G:/aaa/1.txt");
			
			/*
			 * Unhandled exception type SQLException 
			 * 未處理異常,異常型別為 SQLException 資料庫異常
			 */
			Connection connection = DriverManager.getConnection(null);
		} catch (FileNotFoundException e) {
			// 針對於檔案未找到異常情況處理
			System.out.println("日誌記錄:");
			e.printStackTrace();
		} catch (SQLException e) {
			// 針對 SQL 資料庫異常處理
			System.out.println("日誌記錄:");
			e.printStackTrace();
		}
		
		System.out.println("程式碼繼續執行.....");
	}
}
  1, 在 try 大括號是有可能出現異常的程式碼
  2,程式碼如果有異常存在,JVM 會在執行階段建立對應異常物件,保留必要資訊,可以提供給
catch 塊捕獲異常
  3,在 catch 小括號中是針對於異常的處理型別
  4, JDK 1.8 中允許出現一個 catch 塊同時捕獲多個異常,使用 位或(二進位制運算子)
    	案例
		catch (FileNotFoundException | SQLException e) 
  5. 在 catch 塊是針對當前異常的處理方式,後期可以進行日誌記錄,訊息記錄,轉發給其他程式,提供給使用者一定的提示頁面
  6. 如果程式碼執行 try catch 獲取異常之後,JVM 認為當前程式中沒有異常,程式碼可以從 catch 塊之後繼續執行。
 
4.2 捕獲異常
關鍵字
    throw 在方法內部指定情況下,丟擲異常物件!!!
    throws 在方法宣告位置,告知呼叫者當前方法有哪些異常丟擲!!!     
import java.io.FileNotFoundException;
import java.sql.SQLException;

public class Demo4 {
	public static void main(String[] args) throws FileNotFoundException, SQLException {
		
		// 呼叫帶有異常丟擲的方法,第一種方式,捕獲異常
		try {
			test("111", "222");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		// 呼叫帶有異常丟擲的方法,第二種方式,捕獲異常 按照 JDK 1.8 規則可以用一個 catch 利用【位或】處理多個異常
		try {
			test("111", "222");
		} catch (FileNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		// 呼叫帶有異常丟擲的方法,第三種方式 繼續丟擲異常
		test("111", "222");
	}
	
	/*
	 * @throws 文件註釋中用於提示使用者當前方法有哪些異常丟擲
	 */
	/**
	 * 測試方法
	 * 
	 * @param fileName 檔名稱
	 * @throws FileNotFoundException 檔案未找到異常
	 * @throws SQLException          SQL異常
	 */
	public static void test(String fileName, String sql) throws FileNotFoundException, SQLException {
		// 如果檔名不合法,丟擲 FileNotFoundException 檔案未找到異常!
		if (null == fileName) {
			/*
			 * 丟擲異常,當前檔案未找到 
			 * throw 方法內部丟擲異常關鍵字
			 * new FileNotFoundException("給予方法檔名稱不合法!");
			 * 			建立了一個 FileNotFoundException 異常物件,同時給予必要的異常資訊 message ==> "給予方法檔名稱不合法!"
			 * 
			 * Unhandled exception type FileNotFoundException
			 * 未處理異常,異常型別 FileNotFoundException
			 */
			throw new FileNotFoundException("給予方法檔名稱不合法!");
		}
		
		if (null == sql) {			
			throw new SQLException("SQL異常");
		}
	}
}

4.3 丟擲和捕獲的選擇

5. 編譯時異常和執行時異常

import java.sql.SQLException;

public class Demo5 {
	public static void main(String[] args) {
		
	}
	
	/*
	 * JVM虛擬機器針對於異常型別進行了分類
	 * 		1. 編譯時異常
	 * 			在程式碼編譯階段對異常進行丟擲或者捕獲處理,解決方法中出現的異常問題 
	 * 		2. 執行時異常
	 * 			JVM針對於執行時異常有一定的處置方式,同時這一類異常較為普遍
	 * 			例如:
	 * 				ArrayIndexOutOfBoundsException 陣列下標越界異常
	 * 				NullPointerException 空指標異常
	 * 				StringIndexOutOfBoundsException 字串下標越級異常
	 */
	public static void test() throws SQLException {
//		throw new ArrayIndexOutOfBoundsException("陣列下標越級異常");
		throw new SQLException("SQL語句異常");
	}
}