6.1-全棧Java筆記:異常處理機制的概念

異常問題

實際工作中,遇到的情況不可能是非常完美的。比如:你寫的某個模塊,用戶輸入不一定符合你的要求、你的程序要打開某個文件,這個文件可能不存在或者文件格式不對,你要讀取數據庫的數據,數據可能是空的等。我們的程序再跑著,內存或硬盤可能滿了等等。

軟件程序在運行過程中,非常可能遇到剛剛提到的這些異常問題,我們叫異常,英文是:Exception,意思是例外。這些,例外情況,或者叫異常,怎么讓我們寫的程序做出合理的處理,安全的退出,而不至于程序崩潰。

如果我們要拷貝一個文件,在沒有異常機制的情況下,我們需要考慮各種異常情況,偽代碼如下:

【示例1】偽代碼使用if處理程序中可能出現的各種情況

//將d:/a.txt復制到e:/a.txt

if("d:/a.txt"這個文件存在){

??? if(e盤的空間大于a.txt文件長度){

?????? if(文件復制一半IO流斷掉){

???????????停止copy,輸出:IO流出問題!

?????? }else{

???????????copyFile("d:/a.txt","e:/a.txt");

?????? }

??? }else{

???????輸出:e盤空間不夠存放a.txt!

??? }

}else{

????輸出:a.txt不存在!

}

這種方式,有兩個壞處:

1.??邏輯代碼和錯誤處理代碼放一起!

2.??程序員本身需要考慮的例外情況較復雜,對程序員本身要求較高!

那么,我們如何解決應對異常情況呢?JAVA的異常機制給我們提供了方便的處理。如上情況,如果是用JAVA的異常機制來處理,示意代碼如下(僅限示意,不能運行):

try?{

??? copyFile("d:/a.txt","e:/a.txt");

}?catch?? (Exception e) {

??? e.printStackTrace();

}

異常機制本質

就是當程序出現錯誤,程序安全退出的機制

異常(Exception)的概念

我們開始看我們的第一個異常對象,并分析一下異常機制是如何工作的。

【示例2】異常的分析

public?class?Test {

????public?static?void?main(String[] args) {

???????int?i=1/0;

?????? System.out.println(i);

??? }

}

示例2?運行效果圖?

Java是采用面向對象的方式來處理異常的。處理過程:

1.拋出異常:在執行一個方法時,如果發生異常,則這個方法生成代表該異常的一個對象,停止當前執行路徑,并把異常對象提交給JRE。

2.捕獲異常:JRE得到該異常后,尋找相應的代碼來處理該異常。JRE在方法的調用棧中查找,從生成異常的方法開始回溯,直到找到相應的異常處理代碼為止。


本節課我們先聊到這兒,明天我們繼續聊……



「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發經驗,曾在神州數碼、航天院某所研發中心從事軟件設計及研發工作,從小白逐漸做到工程師、高級工程師、架構師。精通Java平臺軟件開發,精通JAVAEE,熟悉各種流行開發框架。


筆記包含從淺入深的六大部分:

A-Java入門階段

B-數據庫從入門到精通

C-手刃移動前端和Web前端

D-J2EE從了解到實戰

E-Java高級框架精解

F-Linux和Hadoop?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容