異常概念
異常就是在程式的運作過程中所發生的不正常的事件,它會中斷正在運作的程式
在Java程式中如果遇到了異常的話咱們想辦法解決這些一樣。
Java程式設計語言使用異常處理機制為程式提供了異常處理的能力
常見的異常
ArrayIndexOutOfBoundException--->數組越界
ClassCastException--->類型轉換異常
NullPointerException------>通路null的對象方法、空指針
IllegalArgumentException-------->接收非法參數
ArithmeticException--------->算術運算異常
ClassNotFoundException----------->不能加載所需要的類
InputMisMacthException---------> 接收的資料類型與實際輸入的類型不比對
NumberFormatException-------->格式化資料異常
IOException------------>檔案讀寫異常
異常的處理
在Java中異常的處理也是非常常見的,一般的情況下咱們使用一下集中處理方式:
Java的異常處理是通過5個關鍵字來實作的:try、catch、 finally、throw、throws
能夠處理異常的方式有上面的三種方式:
- 使用try...catch...finally
在實際的開發中使用這種方式是最多的,所謂的處理異常其實就是為了保證代碼能夠繼續執行下去。
public static void main(String[] args) { System.out.println("異常出現之前"); //出現異常 try { //這裡是可能出現異常的代碼 int a=1/0; } catch (Exception e) {//捕獲異常 System.out.println("上面出現的異常為:"+e); }finally{//永遠執行 System.out.println("我無論上面情況下都執行"); } System.out.println("異常出現之後"); } |
異常出現之前 上面出現的異常為:java.lang.ArithmeticException: / by zero 我無論上面情況下都執行 異常出現之後 |
2.使用throw是将異常進行抛出
throw用來抛出異常,根本沒有處理異常。一般使用在方法中
案例:
public static void main(String[] args) { try { show(); } catch (Exception e) { System.out.println(e); } } public static void show(){ System.out.println("異常出現之前"); System.out.println("異常出現之後"); //抛出異常給方法的調用出 throw new ArrayIndexOutOfBoundsException("這是一個數組越界的異常,注意索引..."); } |
異常出現之前 異常出現之後 java.lang.ArrayIndexOutOfBoundsException: 這是一個數組越界的異常,注意索引... |
throw關鍵字主要是在方法中抛出異常。
3.throws關鍵字處理異常
throw關鍵字處理異常是在方法内容抛出,throws實在方法上抛出異常。
案例:
public static void main(String[] args) throws ArithmeticException{ System.out.println("異常出現之前"); System.out.println("異常出現之後"); } |
public String readLine() throws IOException |
上面的方法上使用throws關鍵字抛出異常了,就說明此方法可能出現異常,但是在此方法中沒有進行異常處理,而是将可能出現的異常交給了方法的調用出。但是現在是在main()方法上抛出了異常,main()方法是JavaSE中程式中代碼執行入口,這樣的話main()其實在Java中是JVM(虛拟機)調用的,是以此方法抛出了異常就交給了JVM進行處理了。
通路權限
包的意義
1、定義類時需要指定類的名稱。但如果僅僅将類名作為類的唯一标示,則不可避免的出現命名沖突的問題。這會給元件複用以及團隊間的合作造成很大麻煩!
2、在Java語言中,用包(package)的概念來解決命名沖突的問題。
3、在定義一個類時,除了定義類的名稱以外,一般還要指定一個包名
4、package語句必須寫在Java源檔案的最開始,在類定義之前。
5、類一旦一定在了包中,那麼類的全稱應該是“包名.類名”。
import語句
import語句主要是用來導包的。
1、添加了包名的類在使用時就需要使用類的全稱,如
public static void main(String[] args) { //不适用import導入,直接使用完整類名稱 com.sram.entity.Student student=new com.sram.entity.Student(); student.show(); } |
2、但這樣的書寫方式過于繁瑣,java可以通過使用import語句對類的全稱進行聲明,如
package com.sram.test; import com.sram.entity.Student; public class MyTest { public static void main(String[] args) { //使用import導入 Student student=new Student(); student.show(); } } |
3、通過import語句聲明了類的全稱之後,該源檔案中就可以直接使用類名來進行通路了。
//使用import導入 Student student=new Student(); student.show(); |
4、有時,import語句中也可以使用“*”符号,如
package com.sram.test; import com.sram.entity.*; public class MyTest { public static void main(String[] args) { //使用import導入 Student student=new Student(); student.show(); Person person=new Person(); } } |
這就意味着聲明了該包中所有類的全稱,該檔案中就可以直接使用com.mutouren.demos包中的所有類的類名來進行通路。
包(package)
1、package語句可以劃分不同的包,也就是可以使檔案在不同目錄下
2、import語句可以導入帶包名的類,以便在使用時省略包名
3、但并不是所有帶包名的類在使用時都需要導入包名,如:
1、同一個包中的類不需要導包
2、系統包java.lang中的類也不需要導包
案例:
package com.sram.test; public class MyTest { public static void main(String[] args) { String str="hello"; } } |
在主方法中一直使用String類,但是咱們從來沒有使用import導入過String類的對應的包,這是因為String是java.lang包下面的類,是以不需要導包操作。
修飾符的權限
屬性 | 允許的通路 |
public | 允許來自任何類中的方法通路 |
protected | 允許本包中的類和(即便不在同一包下的)所有子類的方法通路(子類對象可以使用) |
無修飾限制 | 允許同一包下任何類中的方法通路 |
private | 隻允許本類内部的方法通路,其他任何通路都被拒絕 |
上面就是java中的權限修飾符,在使用的時候根據自己的設計需求去指定具體的修飾符即可。