java 内部类异常_Java笔记(三 内部类、异常、编程规范)
內部類(Outer.java)
在一個類中定義另外一個類,這個類就叫做內部類或內置類(inner class)
內部類和外部類分屬不同的空間,都有自己的數據變量和數據方法,內部類仍然是一個獨立的類
內部類所產生的字節碼的文件名:外部類$內部類.class
內部類可以讓我們將邏輯上相關的一組類組織起來,并由外部類(outer class)來控制內部類的可見性
當我們建立一個inner class時(不管其嵌套的層次有多深),其對象就擁有了與外部類對象之間的一種關系,這是通過一個特殊的this reference形成的,使得內部類對象可以隨意的訪問外部類中所有的成員
在一個方法內定義一個類的時候只能在該方法內部使用這個類
還可將內部類的定義放置在一個語句塊中
在方法中定義的內部類,如果要訪問方法中定義的本地變量或方法的參數,則變量必須被聲明為final
內部類可以聲明為private或protected,還可以聲明為abstract或final
內部類可以聲明為static的,那么在產生內部類的對象的時候就無需同時再存在一外部類的對象,但此時就不能再使用外部類的非static的成員變量和非static的成員方法
非static的內部類中的成員不能聲明為static的,只有在頂層類或static的內部類中才可聲明static成員
為什么要使用內部類:
在內部類中,可以隨意的訪問外部類的成員,這可以讓我們更好地組織管理我們的代碼,增強代碼的可讀性(若外部類要訪問內部類的成員,需要先產生內部的的一個對象,然后利用這個對象去引用內部類的成員)
內部類可以用于創建適配器類,適配器類是用于實現接口的類。使用內部類來實現接口,可以更好地定位與接口關聯的方法在代碼中的位置
內部類的更多用法
java.lang包下有個Exception類,它有很多子類。不過雖然Exception類在java.lang包下,但它的子類不一定都在這同一個包中。Exception類類是從Throwable類派生出來的
異常處理:
打開一個不存在的文件、網絡連接中斷、數組下標越界、正在加載的類文件丟失等都會引發異常
Java中的異常類定義了程序中遇到的輕微的錯誤條件
Java中的錯誤類定義了程序中不能恢復的嚴重錯誤條件。如內存溢出、類文件格式錯誤等。這一類錯誤由Java運行系統處理,不需要我們去處理
Java程序在執行過程中如出現異常,會自動生成一個異常類對象,該異常類對象將被提交給Java運行時的系統,這個過程稱為拋出(throw)異常
當Java運行時系統接收到異常對象時,會尋找能處理這一異常的代碼把當前異常對象交給其處理,這一過程稱為捕獲(catch)異常
如果Java運行時系統找不到可以捕獲異常的方法,則運行時系統將終止,相應的Java程序也將退出
try/catch/finally語句:把可能引發異常的代碼放到try里,在catch語句中對異常條件進行處理。
若沒有進行異常處理,在程序退出的時候會自動調用printStackTrace()。
可以寫多個catch。
不管程序有無異常,finally語句里的代碼都會執行。但當程序終止運行的時候,finally語句里的代碼就不會執行(如前有System.exit(-1))
拋出異常聲明函數throws
class Excep
{
public int division(int a,int b)
{
return a/b;
}
}
class ExcepTest
{
public static void main(String[] args)
{
Excep excep=new Excep();
try
{
excep.division(5,0);
System.out.println("exception");
}
catch(Exception e)
{
//System.out.println("can‘t");
//System.out.println(e.getMessage());
//System.out.println(e.toString());
e.printStackTrace();//異常發生的軌跡
}
System.out.println("finish");
}
}
----------------------------------------------------------------------
class Excep
{
public int division(int a,int b) throws Exception
{
return a/b;
}
}
class ExcepTest
{
public static void main(String[] args)
{
Excep excep=new Excep();
excep.division(5,0);
System.out.println("exception");
System.out.println("finish");
}
}
對于RuntimeException通常都不需要我們捕獲,這類異常由Java運行系統自動拋出并自動處理。所以throws RuntimeException時,Java不會強制要求捕獲,其他的會強制要求捕獲
如果父類中的方法拋出多個異常,則子類中的覆蓋方法要么拋出相同的異常,要么拋出異常的子類,但不能拋出新的異常(構造方法除外)
我們可以在方法聲名時,聲名一個不會拋出的異常,Java編譯器就會強迫方法的使用者對異常進行處理。這種方式通常應用于abstract base class和interface中
可以自己添加異常類,但必須從Exception中派生:
class DivisorIsMinusException extends Exception
{
DivisorIsMinusException(String str)
{
super(str);
}
}
Java編程規范:
package的名字由全部小寫的字母組成,如:cn.mubole
class和interface的名字由大寫字母開頭而其他字母都小寫的單詞組成,例如:Person,Exception
class變量的名字用一個小寫字母的單詞開頭,后面的單詞都用大寫字母開頭,例如:index,currentImage
class方法的名字用一個小寫字母的單詞開頭,后面的單詞都用大寫字母開頭,例如:run(),getBalance()
static final變量的名字所有字母都大寫,并且能表示完整含義。例如:PI,PASSWORD
參數的名字和變量的命名規范一致
數組應該總是用這樣的方式來命名:byte[] buffer
總結
以上是生活随笔為你收集整理的java 内部类异常_Java笔记(三 内部类、异常、编程规范)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis存储java对象存储_Spri
- 下一篇: java nextintln_Java对