在CSS中使用JS變數Vue專案
阿新 • • 發佈:2022-04-22
異常
- 異常分為兩大類,執行時異常和編譯時異常
- 執行時異常,編譯器不要求強制處置的異常。一般是指程式設計時的邏輯錯誤,是程式設計師應該避免出現的異常。java.lang.RuntimeException類及它的子類都是執行時異常
- 對於執行時異常,可以不作處理,因為這類異常很普遍,若全處理可能會對程式的可讀性和執行效率產生影響
- 編譯時異常是編譯器要求必須處置的異常
細節:
1.如果異常發生了,異常後面的程式碼不會執行,直接進入catch塊
2.如果異常沒有發生,則順序執行try的程式碼塊,不會進入catch塊
3.如果希望不管是否發生異常,都執行某段程式碼(比如關閉連線,釋放資源等)則使用如下程式碼-finally
4.可以有多個catch語句,捕獲不同的異常(進行不同的業務處理),要求父類異常在後,子類異常在前,比如(Exception在後,NullPointerException在前),如果發生異常,只會匹配一個catch
5.可以進行try-finally配合使用,這種用法相當於沒有捕獲異常因此程式會直接崩掉/退出.應用場景:就是執行一段的程式碼,無論是否發生異常都必須執行某個業務邏輯
package com.example.try_; /** * @Author 10704 * @Time 2022/5/9 12:25 * @Version 1.0 */ public class TryDetail { public static void main(String[] args) { //1.如果異常發生了,異常後面的程式碼不會執行,直接進入catch塊 //2.如果異常沒有發生,則順序執行try的程式碼塊,不會進入catch塊 //3.如果希望不管是否發生異常,都執行某段程式碼(比如關閉連線,釋放資源等)則使用如下程式碼-finally try { String name = "郜慶輝"; int a = Integer.parseInt(name); System.out.println("數字a=" + a); } catch (NumberFormatException e) { System.out.println("異常資訊=" + e.getMessage()); }finally { System.out.println("finally程式碼塊被執行"); } System.out.println("程式繼續執行"); } }
package com.example.try_; /** * @Author 10704 * @Time 2022/5/9 12:36 * @Version 1.0 */ public class TryDeatail02 { public static void main(String[] args) { // 4.可以有多個catch語句,捕獲不同的異常(進行不同的業務處理), // 要求父類異常在後,子類異常在前,比如(Exception在後, // NullPointerException在前),如果發生異常,只會匹配一個catch try { Person person = new Person(); person = null; System.out.println(person.getName());// NullPointerException int n1 = 10; int n2 = 0; int res = n1 / n2; // ArithmeticException System.out.println("res=" + res); } catch (NullPointerException e) { System.out.println("空指標異常=" + e.getMessage()); } catch (ArithmeticException e) { System.out.println("算數異常=" + e.getMessage()); } catch (Exception e) { System.out.println(e.getMessage()); } } } class Person { private String name = "jack"; public String getName() { return name; } }
package com.example.try_;
/**
* @Author 10704
* @Time 2022/5/9 12:50
* @Version 1.0
*/
public class TryDetail03 {
public static void main(String[] args) {
//5.可以進行try-finally配合使用,這種用法相當於沒有捕獲異常
//因此程式會直接崩掉/退出.
//應用場景:就是執行一段的程式碼,無論是否發生
// 異常都必須執行某個業務邏輯
try {
int n1 = 10;
int n2 = 0;
System.out.println(n1 / n2);
} finally {
System.out.println("執行了finally");
}
System.out.println("程式繼續執行");
}
}
throws
基本介紹:
- 如果一個方法(中的語句執行時)可能生成某種異常,但是並不能確定如何處理這種異常,則此方法應顯示地宣告丟擲異常,表明該方法將不對這些異常進行處理,而由該方法的呼叫者負責處理。
- 在方法宣告中用throws語句可以宣告丟擲異常的列表,throws後面的異常型別可以是方法中產生的異常型別,也可以是它的父類。
throws細節
package com.example.throws_;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
/**
* @Author 10704
* @Time 2022/5/9 15:15
* @Version 1.0
*/
public class ThrowsDetail {
public static void main(String[] args) {
f1();
}
public static void f1() {
// 1.對於編譯異常,程式中必須處理,比如使用try-catch或者throws
// 2.對於執行時異常,程式中如果沒有處理,預設就是throws的方式處理
int n1 = 10;
int n2 = 0;
int res = n1 / n2;
}
}
class Father {
public void method() throws RuntimeException {
}
}
class Son extends Father {
// 3.子類重寫父類的方法時,對丟擲異常的規定:子類重寫的方法
// 所丟擲的異常型別要麼和父類丟擲的異常一致,要麼為父類丟擲異常型別的子類異常
@Override
public void method() throws ArithmeticException {
}
public static void f2() throws FileNotFoundException {
// 1.因為f3()方法丟擲的異常是一個編譯異常
// 2.這時就要f2()必須處理這個編譯異常
// 3.在f2()中,處理這個異常的辦法要餓時try-catch-finally,或者繼續throws這個編譯異常
f3();
}
public static void f3() throws FileNotFoundException {
FileInputStream file = new FileInputStream("d://aa.txt");
}
public static void f4() {
// 1.在f4中呼叫f5這個方法是可以的,不需要顯示的throws或者try
// 2.原因是f5()丟擲的異常是執行異常
// 3.而在Java中,並不要求程式設計師顯示處理,因為有預設的處理機制
f5();
}
public static void f5() throws RuntimeException {
}
}
自定義異常
package com.example.customexception_;
public class Customeexception_ {
public static void main(String[] args) {
//要求年齡範圍在18-120之間,否則丟擲一個自定義異常
int age = 190;
if (!(age >= 18 && age <= 120)) {
throw new AgeException("年齡必須輸入從18~120");
}
}
}
// 自定義一個異常
// 1.一般情況下,我們自定義異常是繼承RuntimeException
// 2.即把自定義異常做成執行時異常,好處是執行時異常可以使用預設的處理機制
class AgeException extends RuntimeException {
public AgeException(String message) {
super(message);
}
}
throw和throws的區別
意義 | 位置 | 後面跟的東西 | |
---|---|---|---|
throws | 異常處理的一種方式 | 方法宣告處 | 異常的型別 |
throw | 手動生成異常物件的關鍵字 | 方法體中 | 異常物件 |
常見的七大異常(前五種常用)
ClassCastException(類轉換異常)
- 當試圖將物件強制轉換為不是例項的子類時,丟擲該異常。
IndexOutOfBoundsException(陣列越界)
- 用非法索引訪問陣列時丟擲的異常。如果索引為負或大於等於陣列大小,則該索引為非法索引
NullPointerException(空指標異常)
- 當應用程式試圖在需要物件的地方使用 null 時,丟擲該異常
NumberFormatException (數字格式不正確異常)
- 當應用程式試圖將字串轉換成一種數值型別,但該字串不能轉換為適當格式時,丟擲該異常 => 使用異常我們可以確保輸入是滿足條件數字.
ArithmeticException (數學運算異常)
- 當出現異常的運算條件時,丟擲此異常。例如,一個整數“除以零”時
IllegalAccessException(安全許可權異常)
- 這個異常的解釋是“沒有訪問許可權“,當應用程式要呼叫一個類,但當前的方法即沒有對該類的訪問許可權便會出現這個異常。對程式中用了Package的情況下要注意這個異常。
IOException(輸入輸出異常)
- 一般讀寫檔案會出現這個異常,比如你想從磁碟上讀一個檔案到你寫的程式,如果硬碟上沒有這檔案,java虛擬機器就會報這個異常。