天天看點

學習java入門詳解七—異常、通路權限

異常概念

異常就是在程式的運作過程中所發生的不正常的事件,它會中斷正在運作的程式

在Java程式中如果遇到了異常的話咱們想辦法解決這些一樣。

Java程式設計語言使用異常處理機制為程式提供了異常處理的能力

 常見的異常

 ArrayIndexOutOfBoundException--->數組越界

ClassCastException--->類型轉換異常

NullPointerException------>通路null的對象方法、空指針

IllegalArgumentException-------->接收非法參數

ArithmeticException--------->算術運算異常

ClassNotFoundException----------->不能加載所需要的類

InputMisMacthException---------> 接收的資料類型與實際輸入的類型不比對

NumberFormatException-------->格式化資料異常

IOException------------>檔案讀寫異常

 異常的處理

在Java中異常的處理也是非常常見的,一般的情況下咱們使用一下集中處理方式:

Java的異常處理是通過5個關鍵字來實作的:try、catch、 finally、throw、throws

能夠處理異常的方式有上面的三種方式:

  1. 使用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中的權限修飾符,在使用的時候根據自己的設計需求去指定具體的修飾符即可。