Java基礎筆記-異常總結,包

來源:互聯網
上載者:User

標籤:

異常:是對問題的描述,將問題進行對象封裝,

異常的體系:

Throwable:

  1.Error

  2.Exception

    1.RuntimeException

異常體系的特點:

異常體系中的所有類以及建立的對象都具備可拋性。
可以被throw和throws關鍵字所操作,只有異常體系具備這個特點。

 

throw和throws的用法區別:

throw定義在函數內,用於拋出異常對象。

throws定義在函數上,用於拋出異常類,可以拋出多個並用逗號隔開。

當函數內容有throw拋出異常對象,並未進行trycatch處理時,必須要在函數上throws聲明,否則會編譯失敗。
RuntimeException除外,當函數內如果拋出的是RuntimeExcpetion異常,函數上可以不用聲明。

 

異常處理語句:
try
{
   需要被檢測的代碼;
}
catch ()
{
   處理異常的代碼;
}
finally
{
   一定會執行的代碼;
}

finally:一定會被執行的代碼,通常定義的是用於關閉資源的代碼.

特殊情況:當在finally語句之前執行了System.exit(0); 語句時,finally語句不會被執行.

 

自訂異常:

 定義類繼承Exception或者RuntimeException  

1.為了讓自訂類具備可拋性。  

2.讓該類具備操作異常的共性方法。

當要定義自訂異常的資訊時,可以使用父類已經定義好的功能.將異常資訊傳遞給父類的建構函式。

class xxxException extends Exception

 {   

  xxxException(String message)   

  {    

    super(message);   

  }

 }

自訂異常:根據Java中的物件導向思想,將程式中出現的特有問題進行封裝。

在子父類覆蓋時:
 1.子類拋出的異常必須是父類的異常的子類或者子集。
 2.如果父類或者介面沒有異常拋出時,子類覆蓋出現異常,只能trycatch處理而不能用throw/throws拋出。

  1 /*  2 求圓,和長方形的面積  3 */  4 class NoValueException extends RuntimeException //Exception  5 {  6     //private String message;  7         NoValueException(String message)  8         {  9                 super(message);         10         } 11 } 12  13 /* 14 abstract class Shape 15 { 16      abstract void getArea(); 17 } 18  19 class rec extends Shape 20 */ 21 //介面也是一種抽象方法 22 interface Shape 23 { 24     void getArea(); 25 } 26 class Rec implements Shape  27 { 28         private int len,wid; 29         Rec(int len,int wid) //throws NoValueException 30         { 31             if(len<=0 ||wid<=0) 32                     throw new NoValueException("len,wid的值非法"); 33             /* 34                 { 35                     System.out.println("len,wid值非法"); 36                 } 37             */ 38                  39                     this.len = len; 40                     this.wid = wid;  41                  42         } 43         public void getArea() 44         { 45             System.out.println("長方形的面積是:"+len*wid); 46         } 47 } 48 class Circle implements Shape 49 { 50         private double radius; 51         public static  final double PI = 3.14; 52         Circle(double radius) throws NoValueException 53         { 54                 if(radius<=0) 55                         throw new NoValueException("出現了非法值的情況");     56                          57                 this.radius = radius; 58         } 59         public void getArea() 60         { 61                 System.out.println("圓的面積是:"+radius*radius*PI); 62         } 63      64 } 65  66 class ExceptionTest2 67 { 68     public static void main(String args[]) 69     { 70         /* 71         //繼承的是Exception時. 72                 try 73                 { 74                         Rec r = new Rec(-3,4);     75                         r.getArea(); 76                 } 77                         catch(NoValueException e) 78                 { 79                         System.out.println(e.toString()); 80                 }     81         */         82         //繼承的是RuntimeException時,可以不需要進行try操作.出現異常程式會停止. 83                 Rec r = new Rec(3,4);     84                 r.getArea(); 85                  86                  87                 try 88                 { 89                         Circle c = new Circle(-3); 90                         c.getArea(); 91                 } 92                 catch(NoValueException e) 93                 { 94                         System.out.println(e.toString()); 95                 } 96                  97  98          99         100     }101         102 }

 

包:package

作用:讓源檔案與類檔案相分離.

格式:

package 包名; //該定義語句要定義在代碼的第一行.(最上方)

有了包名以後,類名的全稱就是: 包名.類名 (該類要在包上)

當包中的類相互繼承以後,可以訪問被protected修飾的屬性和方法.包與包之間可以使用的許可權有兩種:public和protected

四種許可權之間能否能訪問如下所示:

        public    protected    default(預設許可權)    private

同一個類中    Ok      Ok        Ok          Ok

同一個包中    Ok      Ok        Ok          No

子類       Ok      Ok        No          No

不同包中       Ok      No        No          No

注意: 在一個java檔案中,不能有兩個或者兩個以上的公有類或者介面.

 

匯入:import關鍵字.

作用,用於簡化類名的書寫.當import以後, 類名可以直接簡寫,不在需要 包名.類名 的形式書寫了.

 

物件導向好像終於學完了,好多還是不是很懂,不過時間不等人,只能邊自學後面的邊繼續看物件導向的有關知識了.

 

Java基礎筆記-異常總結,包

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.