1. java程序員應該手動拋出什麼異常不能拋出RuntimeException吧
是否拋異常看你的實際需要,像你這個簡單的判斷就可以直接給一個返回值去做,在if裡面拋異常還是不建議的。你可以根據他的返回值進行相應的操作。
異常類可以自己新建,但如果公用性不大(只有一處使用的)那還是別浪費那個時間了。
看你的代碼,只是判斷編號是否存在等,我認為是沒有必要拋出異常的,這樣使用起來不是很好
只需要告訴用戶最終結果,你一個異常就阻斷了整個流程的進行。
2. 常見JAVA運行時異常有哪些
1,java.lang.NullPointerException
這個異常的解釋是 "程序遇上了空指針 ",簡單地說就是調用了未經初始化的對象或者是不存在的對象,這個錯誤經常出現在創建圖片,調用數組這些操作中,比如圖片未經初始化,或者圖片創建時的路徑錯誤等等。
2,java.lang.ClassNotFoundException
異常的解釋是"指定的類不存在",這里主要考慮一下類的名稱和路徑是否正確即可
3,java.lang.
這個異常的解釋是"數組下標越界",現在程序中大多都有對數組的操作,因此在調用數組的時候一定要認真檢查,看自己調用的下標是不是超出了數組的范圍,一般來說,顯示(即直接用常數當下標)調用不太容易出這樣的錯,但隱式(即用變數表示下標)調用就經常出錯了.
4,java.lang.NoSuchMethodError
方法不存在錯誤。當應用試圖調用某類的某個方法,而該類的定義中沒有該方法的定義時拋出該錯誤。
5,java.lang.IndexOutOfBoundsException
索引越界異常。當訪問某個序列的索引值小於0或大於等於序列大小時,拋出該異常。
6,java.lang.NumberFormatException
數字格式異常。當試圖將一個String轉換為指定的數字類型,而該字元串確不滿足數字類型要求的格式時,拋出該異常。
7,java.sql.SQLException
Sql語句執行異常
8,java.io.IOException
輸入輸出異常
9,java.lang.IllegalArgumentException
方法參數錯誤
10java.lang.IllegalAccessException
無訪問許可權異常
(2)程序員主動拋出的異常擴展閱讀:
Java技術應用領域:
1、Android應用
許多的 Android應用都是Java程序員開發者開發。雖然 Android運用了不同的JVM以及不同的封裝方式,但是代碼還是用Java語言所編寫。相當一部分的手機中都支持JAVA游戲,這就使很多非編程人員都認識了JAVA。
2、在金融業應用的伺服器程序
Java在金融服務業的應用非常廣泛,很多第三方交易系統、銀行、金融機構都選擇用Java開發,因為相對而言,Java較安全 。大型跨國投資銀行用Java來編寫前台和後台的電子交易系統,結算和確認系統,數據處理項目以及其他項目。
3、網站
Java 在電子商務領域以及網站開發領域占據了一定的席位。開發人員可以運用許多不同的框架來創建web項目,SpringMVC,Struts2.0以及frameworks。即使是簡單的 servlet,jsp和以struts為基礎的網站在政府項目中也經常被用到。例如醫療救護、保險、教育、國防以及其他的不同部門網站都是以Java為基礎來開發的。
4、嵌入式領域
Java在嵌入式領域發展空間很大。在這個平台上,只需130KB就能夠使用Java技術(在智能卡或者感測器上)。
5、大數據技術
Hadoop以及其他大數據處理技術很多都是用Java,例如Apache的基於Java的HBase和Accumulo以及 ElasticSearchas。
6、高頻交易的空間
Java平台提高了這個平台的特性和即使編譯,他同時也能夠像 C++ 一樣傳遞數據。正是由於這個原因,Java成為的程序員編寫交易平台的語言,因為雖然性能不比C++,但開發人員可以避開安全性,可移植性和可維護性等問題。
7、科學應用
Java在科學應用中是很好選擇,包括自然語言處理。最主要的原因是因為Java比C++或者其他語言相對其安全性、便攜性、可維護性以及其他高級語言的並發性更好。
3. Java編程中 常見的異常有哪幾種
相信作為程序員的我們在對程序進行編譯過程中經常會遇到錯誤,或者在運行過程中出現錯誤,在這里主要跟大家談談經常遇到的一些異常與錯誤,以及解決辦法。
異常是指程序在編譯或運行過程出現的錯誤。
在java.lang包中Throwable包含了所有的異常。
Error (錯誤) 和Exception(異常)
(1)Error(錯誤)
一旦發生無法修復,但可以避免發生。
常見錯誤類:
IOError:I/O錯誤,當發生嚴重的I/O錯誤時,拋出此錯誤。
VirtualMachineError:虛擬機錯誤,當 Java 虛擬機崩潰或用盡了它繼續操作所需的資源時,拋出該錯誤。
StackOverflowError:棧內存滿了,當應用程序遞歸太深而發生堆棧溢出時,拋出該錯誤。
OutofMemoryError:堆內存滿了,因為內存溢出或沒有可用的內存提供給垃圾回收器時,Java 虛擬機無法分配一個對象,這時拋出該異常。
以上是一些常見的錯誤,在Error類中還有一些別的錯誤(參照文件Java.lang.Throwable.Error).
(2)Exception(異常)
一旦發生,可以捕獲並處理,不會導致程序終止,有時可以避免有時無法避免。
異常的分類:
1.編譯時異常(需要強制處理) 2.運行時異常(不需要強制處理)
常見的異常有:
IOException:輸入輸出流異常
FileNotFoundException:文件找不到的異常
ClassNotFoundException:類找不到的異常
DataFormatException:數據格式化異常
NoSuchFieldException:沒有匹配的屬性異常
NoSuchMethodException:沒有匹配的方法異常
SQLException:資料庫操作異常
TimeoutException:執行超時異常
常見的運行時異常:
RuntimeException:運行時異常
NullPointerException:空指針異常
:數組越界異
ClassCastException:類型轉換異常
IllegalArgumentException:非法的參數異常
InputMismatchException:輸入不匹配
以上是常見的一些異常,另外還有別的異常,參見文件:Java.lang.Throwable.Exception
既然我們常常會遇到一些異常,那我們如何來處理這些異常就是一個急需解決的事情。
(1) 如何處理編譯時異常?
方法一:將需要處理的代碼塊放在一個try...catch...中
try{
//需要處理異常的代碼
}catch(XXXException ef){
ef.printStackTrace();
}
我們方法一就是要將我們不確定的代碼放入try......catch中,先進行try一下,如果沒有異常,則不會觸發catch,沒有輸出,一旦出現異常,那麼catch就會工作,在catch中捕獲異常信息,根據異常信息進行補救措施。
如以下代碼:
從結果可以看出,我們在輸入數據的時候出現錯誤,這樣通過自定義異常能夠讓我們更直接快速的找到運行或編譯時的異常。
在上述中我們分別提到了三種throw,分別是Throwable,Throws以及throw,那麼到底三者有什麼區別?
Throwable:是指在在Java.lang包中的一個類,其包含了所有的異常和錯誤,其中類Error和Exception 是它
的子類。
Thows:是指在解決編譯時異常,將方法中異常拋給上一級,在方法後面要加Throw Exception來進行拋。
throw:是指在自定義異常時,如果方法出現異常,那麼將作為引用方法的對象拋出。即拋出異常。
希望對您有所幫助!~
4. Java語言中throw和throws的區別是什麼
一、
throw關鍵字用於在代碼中拋出一個異常,如:
throw new Exception("異常一");
下面是一個例子:
5. throw和throws有什麼區別
java中throw和throws的區別
throw語句用在方法體內,表示拋出異常,由方法體內的語句處理。
throws語句用在方法聲明後面,表示拋出異常,由該方法的調用者來處理。
throws主要是聲明這個方法會拋出這種類型的異常,使它的調用者知道要捕獲這個異常。
throw是當程序出現某種邏輯錯誤時由程序員主動拋出某種特定類型的異常是,具體向外拋異常的動作,所以它是拋出一個異常實例。
throw與throws的比較
1、throws出現在方法函數頭;而throw出現在函數體。
2、throws表示出現異常的一種可能性,並不一定會發生這些異常;throw則是拋出了異常,執行throw則一定拋出了某種異常對象。
3、兩者都是消極處理異常的方式(這里的消極並不是說這種方式不好),只是拋出或者可能拋出異常,但是不會由函數去處理異常,真正的處理異常由函數的上層調用處理。
throws:
public static void write() throws FileNotFoundException {
FileInputStream fileInputStream=new FileInputStream("c");
}
throw:
String s = "abc";
if (s.equals("abc")) {
throw new NumberFormatException();
} else {
System.out.println(s);
}
如果對編程感興趣可以來我這個看看,希望對您有所幫助!~
6. Java中運行異常和一般異常的區別
Exception是代表了真正實際意義上的異常對象的猜陪根基類。Exception和從它派生而來的所有異常都是應用程序能夠捕獲到的,並且可以進行異常錯誤恢復處理的異常類型。
Error則表示出現了一個非常嚴重的異常錯誤,並且這個錯誤可能是應用程序所不能恢復的,例如LinkageError,或ThreadDeath等。由Java虛擬機生成並拋出,Java程序不做處理。
java.long.Error和java.lang.RuntimeException(運行時異常)的子類免於編譯時的檢查。鬧兆皮RuntimeException異常由系統檢測,用戶的Java程序可不做處理,系液差統將它們交給預設的異常處理程序。
7. java提供給程序主動拋出異常的語句
直接throws Exception 寫在你的方法或者類名後
或者用try catch
8. java異常處理詳解!!
異常處理是程序設計中一個非常重要的方面,也是程序設計的一大難點,從C開始,你也許已經知道如何用if...else...來控制異常了,也許是自發的,然而這種控制異常痛苦,同一個異常或者錯誤如果多個地方出現,那麼你每個地方都要做相同處理,感覺相當的麻煩! Java語言在設計的當初就考慮到這些問題,提出異常處理的框架的方案,所有的異常都可以用一個類型來表示,不同類型的異常對應不同的子類異常(這里的異常包括錯誤概念),定義異常處理的規范,在1.4版本以後增加了異常鏈機制,從而便於跟蹤異常!這是Java語言設計者的高明之處,也是Java語言中的一個難點,下面是我對Java異常知識的一個總結,也算是資源回收一下。
一、Java異常的基礎知識
異常是程序中的一些錯誤,但並不是所有的錯誤都是異常,並且錯誤有時候是可以避免的。比如說,你的代碼少了一個分號,那麼運行出來結果是提示是錯誤java.lang.Error;如果你用System.out.println(11/0),那麼你是因為你用0做了除數,會拋出java.lang.ArithmeticException的異常。 有些異常需要做處理,有些則不需要捕獲處理,後面會詳細講到。 天有不測風雲,人有旦夕禍福,Java的程序代碼也如此。在編程過程中,首先應當盡可能去避免錯誤和異常發生,對於不可避免、不可預測的情況則在考慮異常發生時如何處理。 Java中的異常用對象來表示。Java對異常的處理是按異常分類處理的,不同異常有不同的分類,每種異常都對應一個類型(class),每個異常都對應一個異常(類的)對象。 異常類從哪裡來?有兩個來源,一是Java語言本身定義的一些基本異常類型,二是用戶通過繼承Exception類或者其子類自己定義的異常。Exception 類及其子類是 Throwable 的一種形式,它指出了合理的應用程序想要捕獲的條件。 異常的對象從哪裡來呢?有兩個來源,一是Java運行時環境自動拋出系統生成的異常,而不管你是否願意捕獲和處理,它總要被拋出!比如除數為0的異常。二是程序員自己拋出的異常,這個異常可以是程序員自己定義的,也可以是Java語言中定義的,用throw 關鍵字拋出異常,這種異常常用來向調用者匯報異常的一些信息。 異常是針對方法來說的,拋出、聲明拋出、捕獲和處理異常都是在方法中進行的。 Java異常處理通過5個關鍵字try、catch、throw、throws、finally進行管理。基本過程是用try語句塊包住要監視的語句,如果在try語句塊內出現異常,則異常會被拋出,你的代碼在catch語句塊中可以捕獲到這個異常並做處理;還有以部分系統生成的異常在Java運行時自動拋出。你也可以通過throws關鍵字在方法上聲明該方法要拋出異常,然後在方法內部通過throw拋出異常對象。finally語句塊會在方法執行return之前執行,一般結構如下: try{ 程序代碼 }catch(異常類型1 異常的變數名1){ 程序代碼 }catch(異常類型2 異常的變數名2){ 程序代碼 }finally{ 程序代碼 } catch語句可以有多個,用來匹配多個異常,匹配上多個中一個後,執行catch語句塊時候僅僅執行匹配上的異常。catch的類型是Java語言中定義的或者程序員自己定義的,表示代碼拋出異常的類型,異常的變數名表示拋出異常的對象的引用,如果catch捕獲並匹配上了該異常,那麼就可以直接用這個異常變數名,此時該異常變數名指向所匹配的異常,並且在catch代碼塊中可以直接引用。這一點非常非常的特殊和重要! Java異常處理的目的是提高程序的健壯性,你可以在catch和finally代碼塊中給程序一個修正機會,使得程序不因異常而終止或者流程發生以外的改變。同時,通過獲取Java異常信息,也為程序的開發維護提供了方便,一般通過異常信息就很快就能找到出現異常的問題(代碼)所在。 Java異常處理是Java語言的一大特色,也是個難點,掌握異常處理可以讓寫的代碼更健壯和易於維護。
二、Java異常類類圖
下面是這幾個類的層次圖: java.lang.Object java.lang.Throwable java.lang.Exception java.lang.RuntimeException java.lang.Error java.lang.ThreadDeath
下面四個類的介紹來自java api 文檔。
1、Throwable Throwable 類是 Java 語言中所有錯誤或異常的超類。只有當對象是此類(或其子類之一)的實例時,才能通過 Java 虛擬機或者 Java throw 語句拋出。類似地,只有此類或其子類之一才可以是 catch 子句中的參數類型。 兩個子類的實例,Error 和 Exception,通常用於指示發生了異常情況。通常,這些實例是在異常情況的上下文中新近創建的,因此包含了相關的信息(比如堆棧跟蹤數據)。
2、Exception Exception 類及其子類是 Throwable 的一種形式,它指出了合理的應用程序想要捕獲的條件,表示程序本身可以處理的異常。
3、Error Error 是 Throwable 的子類,表示僅靠程序本身無法恢復的嚴重錯誤,用於指示合理的應用程序不應該試圖捕獲的嚴重問題。 在執行該方法期間,無需在方法中通過throws聲明可能拋出但沒有捕獲的 Error 的任何子類,因為Java編譯器不去檢查它,也就是說,當程序中可能出現這類異常時,即使沒有用try...catch語句捕獲它,也沒有用throws字句聲明拋出它,還是會編譯通過。
4、RuntimeException RuntimeException 是那些可能在 Java 虛擬機正常運行期間拋出的異常的超類。Java編譯器不去檢查它,也就是說,當程序中可能出現這類異常時,即使沒有用try...catch語句捕獲它,也沒有用throws字句聲明拋出它,還是會編譯通過,這種異常可以通過改進代碼實現來避免。
5、ThreadDeath 調用 Thread 類中帶有零參數的 stop 方法時,受害線程將拋出一個 ThreadDeath 實例。 僅當應用程序在被非同步終止後必須清除時才應該捕獲這個類的實例。如果 ThreadDeath 被一個方法捕獲,那麼將它重新拋出非常重要,因為這樣才能讓該線程真正終止。 如果沒有捕獲 ThreadDeath,則頂級錯誤處理程序不會輸出消息。 雖然 ThreadDeath 類是「正常出現」的,但它只能是 Error 的子類而不是 Exception 的子類,因為許多應用程序捕獲所有出現的 Exception,然後又將其放棄。
以上是對有關異常API的一個簡單介紹,用法都很簡單,關鍵在於理解異常處理的原理,具體用法參看Java API文檔。
三、Java異常處理機制
對於可能出現異常的代碼,有兩種處理辦法: 第一、在方法中用try...catch語句捕獲並處理異常,catach語句可以有多個,用來匹配多個異常。例如: public void p(int x){ try{ ... }catch(Exception e){ ... }finally{ ... } }
第二、對於處理不了的異常或者要轉型的異常,在方法的聲明處通過throws語句拋出異常。例如: public void test1() throws MyException{ ... if(....){ throw new MyException(); } } 如果每個方法都是簡單的拋出異常,那麼在方法調用方法的多層嵌套調用中,Java虛擬機會從出現異常的方法代碼塊中往回找,直到找到處理該異常的代碼塊為止。然後將異常交給相應的catch語句處理。如果Java虛擬機追溯到方法調用棧最底部main()方法時,如果仍然沒有找到處理異常的代碼塊,將按照下面的步驟處理: 第一、調用異常的對象的printStackTrace()方法,列印方法調用棧的異常信息。 第二、如果出現異常的線程為主線程,則整個程序運行終止;如果非主線程,則終止該線程,其他線程繼續運行。 通過分析思考可以看出,越早處理異常消耗的資源和時間越小,產生影響的范圍也越小。因此,不要把自己能處理的異常也拋給調用者。 還有一點,不可忽視:finally語句在任何情況下都必須執行的代碼,這樣可以保證一些在任何情況下都必須執行代碼的可靠性。比如,在資料庫查詢異常的時候,應該釋放JDBC連接等等。finally語句先於return語句執行,而不論其先後位置,也不管是否try塊出現異常。finally語句唯一不被執行的情況是方法執行了System.exit()方法。System.exit()的作用是終止當前正在運行的 Java 虛擬機。finally語句塊中不能通過給變數賦新值來改變return的返回值,也建議不要在finally塊中使用return語句,沒有意義還容易導致錯誤。
最後還應該注意一下異常處理的語法規則: 第一、try語句不能單獨存在,可以和catch、finally組成 try...catch...finally、try...catch、try...finally三種結構,catch語句可以有一個或多個,finally語句最多一個,try、catch、finally這三個關鍵字均不能單獨使用。 第二、try、catch、finally三個代碼塊中變數的作用域分別獨立而不能相互訪問。如果要在三個塊中都可以訪問,則需要將變數定義到這些塊的外面。 第三、多個catch塊時候,Java虛擬機會匹配其中一個異常類或其子類,就執行這個catch塊,而不會再執行別的catch塊。 第四、throw語句後不允許有緊跟其他語句,因為這些沒有機會執行。 第五、如果一個方法調用了另外一個聲明拋出異常的方法,那麼這個方法要麼處理異常,要麼聲明拋出。
那怎麼判斷一個方法可能會出現異常呢?一般來說,方法聲明的時候用了throws語句,方法中有throw語句,方法調用的方法聲明有throws關鍵字。
throw和throws關鍵字的區別 throw用來拋出一個異常,在方法體內。語法格式為:throw 異常對象。 throws用來聲明方法可能會拋出什麼異常,在方法名後,語法格式為:throws 異常類型1,異常類型2...異常類型n。
四、如何定義和使用異常類
1、使用已有的異常類,假如為IOException、SQLException。 try{ 程序代碼 }catch(IOException ioe){ 程序代碼 }catch(SQLException sqle){ 程序代碼 }finally{ 程序代碼 }
2、自定義異常類 創建Exception或者RuntimeException的子類即可得到一個自定義的異常類。例如: public class MyException extends Exception{ public MyException(){} public MyException(String smg){ super(smg); } }
3、使用自定義的異常 用throws聲明方法可能拋出自定義的異常,並用throw語句在適當的地方拋出自定義的異常。例如: 在某種條件拋出異常 public void test1() throws MyException{ ... if(....){ throw new MyException(); } }
將異常轉型(也叫轉譯),使得異常更易讀易於理解 public void test2() throws MyException{ ... try{ ... }catch(SQLException e){ ... throw new MyException(); } }
還有一個代碼,很有意思: public void test2() throws MyException{ ... try { ... } catch (MyException e) { throw e; } }
這段代碼實際上捕獲了異常,然後又和盤托出,沒有一點意義,如果這樣還有什麼好處理的,不處理就行了,直接在方法前用throws聲明拋出不就得了。異常的捕獲就要做一些有意義的處理。
五、運行時異常和受檢查異常
Exception類可以分為兩種:運行時異常和受檢查異常。 1、運行時異常 RuntimeException類及其子類都被稱為運行時異常,這種異常的特點是Java編譯器不去檢查它,也就是說,當程序中可能出現這類異常時,即使沒有用try...catch語句捕獲它,也沒有用throws字句聲明拋出它,還是會編譯通過。例如,當除數為零時,就會拋出java.lang.ArithmeticException異常。 2、受檢查異常 除了RuntimeException類及其子類外,其他的Exception類及其子類都屬於受檢查異常,這種異常的特點是要麼用try...catch捕獲處理,要麼用throws語句聲明拋出,否則編譯不會通過。 3、兩者的區別 運行時異常表示無法讓程序恢復運行的異常,導致這種異常的原因通常是由於執行了錯誤的操作。一旦出現錯誤,建議讓程序終止。 受檢查異常表示程序可以處理的異常。如果拋出異常的方法本身不處理或者不能處理它,那麼方法的調用者就必須去處理該異常,否則調用會出錯,連編譯也無法通過。當然,這兩種異常都是可以通過程序來捕獲並處理的,比如除數為零的運行時異常: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!!!"); try{ System.out.println(1/0); }catch(ArithmeticException e){ System.out.println("除數為0!"); } System.out.println("除數為零後程序沒有終止啊,呵呵!!!"); } }
運行結果:
Hello World!!! 除數為0! 除數為零後程序沒有終止啊,呵呵!!!
4、運行時錯誤 Error類及其子類表示運行時錯誤,通常是由Java虛擬機拋出的,JDK中與定義了一些錯誤類,比如VirtualMachineError 和OutOfMemoryError,程序本身無法修復這些錯誤.一般不去擴展Error類來創建用戶自定義的錯誤類。而RuntimeException類表示程序代碼中的錯誤,是可擴展的,用戶可以創建特定運行時異常類。 Error(運行時錯誤)和運行時異常的相同之處是:Java編譯器都不去檢查它們,當程序運行時出現它們,都會終止運行。
5、最佳解決方案 對於運行時異常,我們不要用try...catch來捕獲處理,而是在程序開發調試階段,盡量去避免這種異常,一旦發現該異常,正確的做法就會改進程序設計的代碼和實現方式,修改程序中的錯誤,從而避免這種異常。捕獲並處理運行時異常是好的解決辦法,因為可以通過改進代碼實現來避免該種異常的發生。 對於受檢查異常,沒說的,老老實實去按照異常處理的方法去處理,要麼用try...catch捕獲並解決,要麼用throws拋出! 對於Error(運行時錯誤),不需要在程序中做任何處理,出現問題後,應該在程序在外的地方找問題,然後解決。
六、異常轉型和異常鏈 異常轉型在上面已經提到過了,實際上就是捕獲到異常後,將異常以新的類型的異常再拋出,這樣做一般為了異常的信息更直觀!比如: public void run() throws MyException{ ... try{ ... }catch(IOException e){ ... throw new MyException(); }finally{ ... } }
異常鏈,在JDK1.4以後版本中,Throwable類支持異常鏈機制。Throwable 包含了其線程創建時線程執行堆棧的快照。它還包含了給出有關錯誤更多信息的消息字元串。最後,它還可以包含 cause(原因):另一個導致此 throwable 拋出的 throwable。它也稱為異常鏈 設施,因為 cause 自身也會有 cause,依此類推,就形成了異常鏈,每個異常都是由另一個異常引起的。 通俗的說,異常鏈就是把原始的異常包裝為新的異常類,並在新的異常類中封裝了原始異常類,這樣做的目的在於找到異常的根本原因。
通過Throwable的兩個構造方法可以創建自定義的包含異常原因的異常類型: Throwable(String message, Throwable cause) 構造一個帶指定詳細消息和 cause 的新 throwable。 Throwable(Throwable cause) 構造一個帶指定 cause 和 (cause==null ? null :cause.toString())(它通常包含類和 cause 的詳細消息)的詳細消息的新 throwable。 getCause() 返回此 throwable 的 cause;如果 cause 不存在或未知,則返回 null。 initCause(Throwable cause) 將此 throwable 的 cause 初始化為指定值。 在Throwable的子類Exception中,也有類似的指定異常原因的構造方法: Exception(String message, Throwable cause) 構造帶指定詳細消息和原因的新異常。 Exception(Throwable cause) 根據指定的原因和 (cause==null ? null : cause.toString()) 的詳細消息構造新異常(它通常包含 cause 的類和詳細消息)。 因此,可以通過擴展Exception類來構造帶有異常原因的新的異常類。
七、Java異常處理的原則和技巧
1、避免過大的try塊,不要把不會出現異常的代碼放到try塊裡面,盡量保持一個try塊對應一個或多個異常。 2、細化異常的類型,不要不管什麼類型的異常都寫成Excetpion。 3、catch塊盡量保持一個塊捕獲一類異常,不要忽略捕獲的異常,捕獲到後要麼處理,要麼轉譯,要麼重新拋出新類型的異常。 4、不要把自己能處理的異常拋給別人。 5、不要用try...catch參與控製程序流程,異常控制的根本目的是處理程序的非正常情況。