簡單給你個例子:
import java.lang.reflect.Method;
public class CallMethod {
public static void main(String[] args) {
CallMethod call=new CallMethod();
try {
Method method=CallMethod.class.getMethod("sunvins",(Class[])null);
method.invoke(call, (Object[])null);
Method method1=CallMethod.class.getMethod("sunvins1",String.class,int.class);
method1.invoke(call, "smile",7);
Method method2=CallMethod.class.getMethod("sunvins2",(Class[])null);
String s=(String)method2.invoke(call, (Object[])null);
System.out.println(s);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 無參無返回值
*/
public void sunvins(){
System.out.println("---haha");
}
/**
* 帶參數(shù)
* @param s
* @param i
*/
public void sunvins1(String s,int i){
System.out.println("--s="+s);
System.out.println("--i="+i);
}
/**
* 帶返回值的
* @return
*/
public String sunvins2(){
return "well";
}
}
可以選擇三種方法來進行異常處理
1對代碼塊用try..catch進行異常捕獲處理;
2在 該代碼的方法體外用throws進行拋出聲明,告知此方法的調用者這段代碼可能會出現(xiàn)這些異常,你需要謹慎處理。此時有兩種情況:
如果聲明拋出的異常是非運行時異常,此方法的調用者必須顯示地用try..catch塊進行捕獲或者繼續(xù)向上層拋出異常。
如果聲明拋出的異常是運行時異常,此方法的調用者可以選擇地進行異常捕獲處理。
3在代碼塊用throw手動拋出一個異常對象,此時也有兩種情況,跟2)中的類似:
如果拋出的異常對象是非運行時異常,此方法的調用者必須顯示地用try..catch塊進行捕獲或者繼續(xù)向上層拋出異常。
如果拋出的異常對象是運行時異常,此方法的調用者可以選擇地進行異常捕獲處理。
(如果最終將異常拋給main方法,則相當于交給jvm自動處理,此時jvm會簡單地打印異常信息)
常處理和設計的建議
1. 只在必要使用異常的地方才使用異常,不要用異常去控制程序的流程
2. 切忌使用空catch塊
3. 檢查異常和非檢查異常的選擇
4. 注意catch塊的順序
5. 不要將提供給用戶看的信息放在異常信息里
6. 避免多次在日志信息中記錄同一個異常
7. 異常處理盡量放在高層進行
8. 在finally中釋放資源
有兩中方式:1.捕獲異常,自己處理.
2.throw出去,讓別人處理.
舉個例子:
public class A{
try{
可能放生異常的語句。
}catch(Exception e){
e.getMessage();//自己處理
}
}
public class A throws Exception{
可能放生異常的語句。
}//throw出去,讓別人處理
注意這里用的是throws
如果在方法里面則用throw
舉例:
public class A{
try{
可能放生異常的語句。
}catch(Exception e){
e.getMessage();//自己處理
throw new Exception ("");
}
}
SampleModel 取樣模型
Databuffer 數(shù)據(jù)緩沖區(qū)
Raster 光柵
Sample 樣本
band 帶
SampleModel是java awt中的一個抽象類,它定義了一個接口,用于提取一幅圖像中的像素(pixel)的樣本(Sample)。
一幅圖像包含了許多數(shù)據(jù),而所有的數(shù)據(jù)是以像素為基本單位來表達的(像素的集合),其中每個像素又由若干樣本來構成。
樣本(Sample),是指對一幅圖像取樣得到的屬于某個帶的單體數(shù)據(jù),
而帶(band),是一副圖像中的特定類型的樣本的全體。
例如,1個像素可包含3個樣本、分別代表紅、綠、藍這三個基色。于是就說以三基色來定義的一幅圖像包含了3個帶:第一個帶含來自圖像中的所有像素的紅色樣本,第二個帶含所有的綠色樣本,第三個帶含所有的藍色樣本。
內存存放方式:像素可用不同方式來進行存儲。如,把一個帶的所有像素按順序進行存放的方式、和把單個像素所含的樣本組(例如三基色的三個樣本)的各個樣本逐組順序存放的方式,等等。
SampleModel的子類用來指定樣本的表達類型(如,是非負的8比特類型byte還是整數(shù)類型的16比特short,等),以及樣本在內存的存放格式。Java 2D(tm)提供的圖像處理內置API不可能支持所有的樣品類型,但通常都會支持16比特無符號整數(shù)類型(0 -65535)或更低的類型,其中,有些API支持的數(shù)據(jù)類型會有很多。
1組像素可表示為1個光柵(Raster。例如一個掃描行)。光柵含1個DataBuffer和1個SampleModel。使用SampleModel可以對DataBuffer中的樣本進行存取,有些還可能提供機器級別的信息,幫助編程者直接操作DataBuffer中的樣品和像素。
SampleModel處理圖像通常是后退法。高效的編程是,把SampleModel 轉換(cast)到適當?shù)淖宇?,從中提取出直接操作DataBuffer中的像素所需的信息。 請參考
Atomic原子性、Consistency一致性、Isolation隔離性和Durability持久性。
原子性:指整個事務是不可以分割的工作單元。只有事務中所有的操作執(zhí)行成功,才算整個事務成功,事務中任何一個SQL語句執(zhí)行失敗,那么已經執(zhí)行成功的SQL語句也必須撤銷,數(shù)據(jù)庫狀態(tài)應該回到執(zhí)行事務前的狀態(tài)。
一致性:指數(shù)據(jù)庫事務不能破壞關系數(shù)據(jù)的完整性以及業(yè)務邏輯上的一致性。例如對于銀行轉賬事務,不管事務成功還是失敗,應該保證事務結束后兩個轉賬賬戶的存款總額是與轉賬前一致的。
隔離性:指的是在并發(fā)環(huán)境中,當不同的事務同時操縱相同的數(shù)據(jù)時,每個事務都有各自的完整數(shù)據(jù)空間。
持久性:指的是只要事務成功結束?它對數(shù)據(jù)庫所做的更新就必須永久保存下來。即使發(fā)生系統(tǒng)崩潰,重新啟動數(shù)據(jù)庫系統(tǒng)后,數(shù)據(jù)庫還能恢復到事務成功結束時的狀態(tài)。
本文并不討論應該采用何種事務處理方式,主要目的是討論如何更為優(yōu)雅地設計事務服務。僅以JDBC事務處理為例。涉及到的DAO,Factory,Proxy,Decorator等模式概念,請閱讀相關資料
Java語言提供兩種異常處理機制:捕獲異常和聲明拋棄異常。
1、捕獲異常:
(1)在Java程序運行過程中系統(tǒng)得到一個異常對象是,它將會沿著方法的調用棧逐層回溯,尋找處理這一異常的代碼。
(2)找到能夠處理這種類型異常的方法后,運行時系統(tǒng)把當前異常交給這個方法處理;如果找不到可以捕獲異常的方法,則運行時系統(tǒng)將終止,相應的Java程序也將退出。
(3)捕獲異常是通過try-catch-finally語句實現(xiàn)的。語法為:
try{
}catch(ExceptionName1 e){
}catch(ExceptionName2 e){
}
}finally{
}
2、聲明拋棄異常:
(1)當Java程序運行時系統(tǒng)得到一個異常對象時,如果一個方法并不知道如何處理所出現(xiàn)的異常,則可在方法聲明時,聲明拋棄異常。
(2)聲明拋棄異常是在一個方法聲明中的throws子句中指明的。如:
public int read() throws IOException{
}
其中throws IOException就是聲明拋棄異常,throws后可以跟多個異常類型。
擴展資料:
程序設計語言的異常機制:
1、多數(shù)語言的異常機制的語法是類似的:用throw或raise拋出一個異常對象(Java或C++等)或一個特殊可擴展的枚舉類型的值(如Ada語言);
2、異常處理代碼的作用范圍用標記子句(try或begin開始的語言作用域)標示其起始,以第一個異常處理子句(catch, except, resuce等)標示其結束;可連續(xù)出現(xiàn)若干個異常處理子句,每個處理特定類型的異常。
3、某些語言允許else子句,用于無異常出現(xiàn)的情況。更多見的是finally, ensure子句,無論是否出現(xiàn)異常它都將執(zhí)行,用于釋放異常處理所需的一些資源。
(1)C++異常處理是資源獲取即初始化(Resource-Acquisition-Is-Initialization)的基礎。
(2)C語言一般認為是不支持異常處理的。Perl語言可選擇支持結構化異常處理(structured exception handling)。
(3)Python語言對異常處理機制是非常普遍深入的,所以想寫出不含try, except的程序非常困難。
參考資料來源:
百度百科-異常處理
Java程序在運行時,Java運行時系統(tǒng)一直對所有的對象進行所謂的運行時類型標識。
這項信息紀錄了每個對象所屬的類。虛擬機通常使用運行時類型信息選準正確方法去執(zhí)行,用來保存這些類型信息的類是Class類。
Class類封裝一個對象和接口運行時的狀態(tài),當裝載類時,Class類型的對象自動創(chuàng)建。Class沒有公共構造方法。
Class對象是在加載類時由Java虛擬機以及通過調用類加載器中的defineClass方法自動構造的,因此不能顯式地聲明一個Class對象。虛擬機為每種類型管理一個獨一無二的Class對象。
也就是說,每個類(型)都有一個Class對象。運行程序時,Java虛擬機(JVM)首先檢查是否所要加載的類對應的Class對象是否已經加載。
如果沒有加載,JVM就會根據(jù)類名查找.class文件,并將其Class對象載入。基本的Java類型(boolean、byte、char、short、int、long、float和double)和關鍵字void也都對應一個Class對象。
每個數(shù)組屬于被映射為Class對象的一個類,所有具有相同元素類型和維數(shù)的數(shù)組都共享該Class對象。一般某個類的Class對象被載入內存,它就用來創(chuàng)建這個類的所有對象。
聲明:本網站尊重并保護知識產權,根據(jù)《信息網絡傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個月內通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:2.714秒