日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

异常、线程入门

發布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 异常、线程入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?

一、異常

1.什么是異常

2.異常的繼承體系

3.異常類中常用的三個方法

4.異常的分類

二、異常處理

1.拋出異常關鍵字throw

2.Objects類中提供的非空判斷方法(*********)

3.遇到異常的兩種處理方式

4.catch代碼塊中三種常見的處理方式

5.多個異常如何獲取處理

6.finally代碼塊

7.異常的注意事項

三、自定義異常

1.自定義異常的步驟

2.自定義異常的練習

四、多線程

1.并行和并發

2.進程和線程


一、異常

1.什么是異常

指的是程序在執行過程中,出現的非正常的情況,最終會導致JVM的非正常停止。

在Java等面向對象的編程語言中,異常本身是一個類,產生異常就是創建異常對象并拋出了一個異常對象。Java處理異常的方式是中斷處理。

2.異常的繼承體系

Throwable體系:

Error:嚴重錯誤Error,無法通過處理的錯誤,只能事先避免,好比絕癥。

Exception:表示異常,異常產生后程序員可以通過代碼的方式糾正,使程序繼續運行, 是必須要處理的。好比感冒、闌尾炎。

3.異常類中常用的三個方法

public void printStackTrace()?:打印異常的詳細信息。包含了異常的類型,異常的原因,還包 括異常出現的位置,在開發和調試階段,都得使用 printStackTrace。

?

public String getMessage()?:獲取發生異常的原因。提示給用戶的時候,就提示錯誤原因。

?

public String toString()?:獲取異常的類型和異常描述信息(不用)。

4.異常的分類

(1)編譯時異常

在編譯時期,就會檢查,如果沒有處理異常,則編譯失敗。(如日期格式化異常)

(2)運行時異常

在運行時期,檢查異常.在編譯時期,運行異常不會編譯器檢測(不報錯)。(如數學異常)

二、異常處理

1.拋出異常關鍵字throw

語法:throw new 異常類名(參數);

2.Objects類中提供的非空判斷方法(*********)

public static <T> T requireNonNull(T obj) {

if (obj == null)

throw new NullPointerException()??;

return obj;

}

每個方法?只要參數是引用類型,一定要進行非空判斷

3.遇到異常的兩種處理方式

(1)throws拋出異常

修飾符 返回值類型 方法名(參數) throws 異常類名1,異常類名2…{ }

(2)try...catch捕獲異常

try{

編寫可能會出現異常的代碼

}catch(異常類型 e){

處理異常的代碼

//記錄日志/打印異常信息/繼續拋出異常

}

4.catch代碼塊中三種常見的處理方式

(1)記錄日志(log4j)

(2)打印異常信息

(3)繼續拋出異常

5.多個異常如何獲取處理

(1)多個異常分別處理。

(2)多個異常一次捕獲,多次處理。

(3)多個異常一次捕獲一次處理。

try{

編寫可能會出現異常的代碼

}catch(異常類型A e){ try中出現A類型異常,就用該catch來捕獲.

處理異常的代碼

//記錄日志/打印異常信息/繼續拋出異常

}catch(異常類型B e){ try中出現B類型異常,就用該catch來捕獲.

處理異常的代碼

//記錄日志/打印異常信息/繼續拋出異常

}

注意:這種異常處理方式,要求多個catch中的異常不能相同,并且若catch中的多個異常之間有子父類異常的關系,那么子類異常要求在上面的catch處理,父類異常在下面的catch處理。

6.finally代碼塊

try...catch....finally:自身需要處理異常,最終還得關閉資源。

當只有在try或者catch中調用退出JVM的相關方法,此時finally才不會執行,否則finally永遠會執行。 比如System.exit(0);

7.異常的注意事項

(1)運行時異常被拋出可以不處理。即不捕獲也不聲明拋出。

(2)如果父類拋出了多個異常,子類覆蓋父類方法時,只能拋出相同的異常或者是他的子集。(比如:如果父類拋出5個異常,子類? ? ? ? ? ? ? ? ? ? ? 只能拋出0-5個和父類相同的異常)

(3)父類方法沒有拋出異常,子類覆蓋父類該方法時也不可拋出異常。此時子類產生該異常,只能捕獲處理,不能聲明拋出

(4)當多異常處理時,捕獲處理,前邊的類不能是后邊類的父類

(5)在try/catch后可以追加finally代碼塊,其中的代碼一定會被執行,通常用于資源回收。

(6)如果finally有return語句,永遠返回finally中的結果,避免該情況.

三、自定義異常

1.自定義異常的步驟

(1) 自定義一個編譯期異常: 自定義類 并繼承于java.lang.Exception 。

(2)自定義運行時期的異常類:自定義類 并繼承于java.lang.RuntimeException 。

(3)必須有兩個構造方法。(無參構造和String參數構造)

2.自定義異常的練習

public class MyException extends Exception {
????public MyException() {

????}

????public MyException(String message) {
????????super(message);
????}
}

四、多線程

1.并行和并發

并行:兩個事件在同一時刻同時進行

并發:兩個事件在同一時間段內同時進行

2.進程和線程

進程:正在運行的程序

線程:完成進程中的某個任務

?

進程和線程之間的一些區別:

進程擁有獨立的棧和堆

線程擁有獨立的的棧和共享堆

?

線程調度

單核CPU,同一時刻,只能執行一個線程

CPU在多個線程之間進行快速切換

調度的兩種方式:

(1)分時調度:平均分配時間片 所有線程輪流使用CPU

(2)搶占式調度:CPU在多個線程之間隨機切換

Java采用搶占式調度

Java進程中默認至少有兩條線程,main線程和垃圾回收線程。

總結

以上是生活随笔為你收集整理的异常、线程入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。