1. 程式人生 > >正則表示式和異常

正則表示式和異常

java和js的編寫格式不一樣,java中需要轉義,js中不需要。
正則表示式,是一個字串,由一些特殊的字元組成,特殊的字元成為正則元字元。

正則元字元
x 代表字元本身x; 單獨寫(a 表示a)。
\ 轉義字元:\ 一個\,.一個.
\r\n 換行 , \t 製表位 tab。

1. 用於匹配特定字元的元字元
[] :用來匹配括號中的任何一個字元,[abc] 匹配其中一個;
[^] : 用來匹配括號字元之外的字元,[^abc] 匹配abc之外的;
[a-z]:用來匹配a到z中的任何一個;
[a-zA-Z]:匹配a到z,A到Z的任何一個;
[0-9]:匹配0到9的任何一個數字;
[a-zA-Z0-9]:匹配這麼多中的一個;

預定義
\d == [0-9]
\D==[^0-9]
\w == [a-zA-Z0-9]
\W==[^\w]
. == 匹配任何字元

String regex = "\\w";
//js不需要轉義

2. 用來限定字元數量的元字元
X? 可以匹配這個字元一次或者一次也沒有
X* 0次或多次
X+ 1次或多次

X{n} 匹配n次
X{n,} n到正無窮
X{n,m} n到m

3. 用來限定字元邊界的元字元
^ 表示已某個字元開頭 ^ [a-z] a-z任意一個開頭 [^a-z] 除了a-z的任何一個
$表示已某個字元結尾
\b表示字元的便捷 匹配不是單詞字元的位置

正則表示式中的邏輯運算子


| 可以匹配 | 兩側中的任何一個正則表示式即可
表示式1 | 表示式2
() 將括號中的 作為一個整體
(ab){2} abab; ab{2} abb

使用正則表示式進行拆分
字串物件 . split(正則表示式物件)

使用正則表示式進行替換
字串物件 . replaceAll(正則表示式物件 想要替換的字元);

異常
在程式中 大致分兩種 err :都是不可控的,系統錯誤,資源錯誤,通過程式改變不了,只能去避免。(記憶體溢位 系統級別控制或控制資源)
exception:有的可控,有的不可控。需要改變程式
1.執行時異常 RuntimeException 處理不處理都行
2.非執行時異常 必須處理。分兩種:系統定義 IOExeception 自定義 系統提供的異常無法滿足需要

發生異常
如果異常發生線上程中,執行緒停止
如果程式只有一個執行緒,程式停止

String str = null
str.isEmpty();
//會報NullPointerException

處理
丟擲:當前方法不進行處理,丟給上一層進行處理,如果都沒有處理1.線上程中,run方法處理;2.沒有其他執行緒,交給main方法;3.給虛擬機器

public void show() throws xxxException {}
public void show() throws xxxException , xxxException {}

捕獲:在當前方法中對異常進行的處理
在當前方法中對異常進行的處理

try{
// may err codes
}catch(Exception e){
//發生異常進行處理的程式碼
}
try{
//可能發生異常的程式碼
}catch(Exception e1){

}catch(Exception e2){
}finally{
不管是否發生異常 一定會被執行
}

final 修飾符 finally 在異常處理時提供finally塊來執行任何清除操作。
finalize 是方法名。java技術允許使用finalize()方法在垃圾收集器將物件從記憶體中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個物件沒有被引用時對這個物件呼叫的。

自定義異常
1.根據需要,建立一個類
2.繼承Exception
3.建立構造方法,呼叫父類的構造
4.呼叫自定義異常

throw 和 throws 區別

宣告位置
throws 方法名後面
throw 方法裡面
可以處理的異常的個數
throws 可以處理多個
throw 只能處理一個
處理者
throws 呼叫者
throw 方法內捕獲
結果
throws 可能會發生某個異常 但是不一定發生
throw 一定會發生某個異常