標籤:
異常:是對問題的描述,將問題進行對象封裝,
異常的體系:
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基礎筆記-異常總結,包