⑴ java語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意
同的異常進行分類,並提供了良好的介面。在Java中,每個異常都是一個對象,它是Throwable類或其它子類的實例。當一個方法出現異常後便拋出一個異常對象,該對象中包含有異常信息,調用這個對象的方法可以捕獲到這個異常並進行處理。Java的異常處理是通過5個關鍵詞來實現的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程序,如果出現異常,系統會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最後(finally)由預設處理器來處理。用try來指定一塊預防所有"異常"的程序。緊跟在try程序後面,應包含一個catch子句來指定你想要捕捉的"異常"的類型。throw語句用來明確地拋出一個"異常"。throws用來標明一個成員函數可能拋出的各種"異常"。Finally為確保一段代碼不管發生什麼"異常"都被執行一段代碼。可以在一個成員函數調用的外面寫一個try語句,在這個成員函數內部寫另一個try語句保護其他代碼。每當遇到一個try語句,"異常"的框架就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種"異常"進行處理,堆棧就會展開,直到遇到有處理這種"異常"的try語句。
⑵ java編程中,throws Exception{ }和try{……}catch(){……}
區別一:throw 是語句拋出一個異常;throws 是方法拋出一個異常;
throw語法:throw <異常對象>
在方法聲明中,添加throws子句表示該方法將拋出異常。如果一個方法會有異常,但你並不想處理這個異常,就在方法名後面用throws,這樣這個異常就會拋出,誰調用了這個方法誰就要處理這個異常,或者繼續拋出.
throws語法:[<修飾符>]<返回值類型><方法名>([<參數列表>])[throws<異常類>]
其中:異常類可以聲明多個,用逗號分割。
區別二:throw要麼和try-catch-finally語句配套使用,要麼與throws配套使用。但throws可以單獨使用,然後再由處理異常的方法捕獲。
聯系一:try .... catch 就是用catch 捕獲 try 中的異常,並處理;catch是捕獲異常。也就是說某一個操作有可能會拋出什麼異常。throw 就是不處理異常,直接拋出異常
調用一個會throws exception的方法(在方法定義的時候可以用throws實現)時,需要把這個方法放在try里,然後用catch破獲這個exception,做相應的處理。
throw new exception()是拋出一個exception,由別的method來破獲它。
也就是說try....catch是為破獲別人的exception用的,而throw是自己拋出exception讓別人去破獲的。
public void input() throws Exception
{ }
public void outputException()
{
try {
input();
}
catch(Exception e)
{
System.out.println("Exception");
}
}
簡單的說,如果一個方法中用了throws,那麼這個方法會向上拋出一個異常,那麼在調用這個方法的時候必須把這個調用放在try...catch塊里處理這個異常。
對於異常有兩種處理方法
1、要麼聲明異常,也就是在方法名後面加上throws exceptionname,..., 方法本身只是拋出異常,由函數調用者來捕獲異常。 若產生異常,異常會沿著調用棧下移,一直找到與之匹配的處理方法,若到達調用棧底仍未找到,程序終止。
2、要麼捕獲異常。通過try catch方法,catch子句中放置處理異常的語句。
聯系二:對於會覺得會有異常拋出的程序塊,用try{}包住,然後用catch來抓住這個異常,在catch中對異常做處理, 在try中如果有異常的話,程序會轉到catch而不會中斷,通常這兩個是配合使用的,如果你不想因為程序有錯,而拋出一大堆異常的話,你就把該程序try起來,try和catch只能獲取程序運行時引發的異常,而throw語句可以引發明確的異常,程序到了throw語句這後就立即停止,不會執行後面的程序,
大家也許在編程的過程中,會意識到這里出錯,但不知道會拋出什麼異常,也是一件頭疼的事,現將這部分總結如下:
算術異常類:ArithmeticExecption
空指針異常類:NullPointerException
類型強制轉換異常:ClassCastException
數組負下標異常:NegativeArrayException
數組下標越界異常:
違背安全原則異常:SecturityException
文件已結束異常:EOFException
文件未找到異常:FileNotFoundException
字元串轉換為數字異常:NumberFormatException
操作資料庫異常:SQLException
輸入輸出異常:IOException
方法未找到異常:NoSuchMethodException
⑶ java中try..catch和throws可以同時用於一個方法體嗎即做到指定的異常自行處理,其他的直接拋給上一級
可以的,只是如果全部的異常都catch的話,就沒有可拋出,就沒必要throws了。。。。。。。。
⑷ java異常處理塊try,catch,throw,throws有什麼本質的區別
有些程序中編譯是沒有問題的.但它存在著邏輯的異常.比如說零做除數.當有這樣的情況時,你可以通過IF來處理,你也可以能過異常,也就是說如果零做除數你就用throw new Exception()拋出一個異常.!
然後能過try-catch來處理.如果說你拋出的異常寫在的是方法里,並且你沒有用try-catch來處理,那麼你就需要在方法的()後面用throws來向上一層拋出異常.當你調用這個方法的時候再進行try-catch處理
⑸ java異常 throw和try-catch的關系
throw是把當前方法中出現的異常拋出去,自己不處理,處理異常交給要調用它的方法;try-catch是成對出現的,意思是在try中捕獲的異常馬上交給catch去處理
⑹ JAVA try中throw異常catch對異常處理是不是就不用throws了
一般都取決於你的業務,如果已經是最上層,業務邏輯層就不用throw,如果是底層可以在catch中再往上拋,有業務層再做異常處理
⑺ java try catch和throws使用場景怎麼合理使用
一般用 在被調用的方法中,給上層拋出異常,讓上級來處理、或顯示給用戶處理
~
~
~
~
~~~~~~~~~~~~~~~~~~~~~
⑻ 關於java裡面throw,throws和try catch有什麼區別嗎
try
catch是拋異常,catch裡面可以直接throw異常,名為runtimexception,運行期,throws是寫在方法後面的可以是運行也可以是編譯期,甚至可以隨便寫個異常,沒吊事。
⑼ JAVA中try catch捕獲異常的問題
在java中添加捕獲異常代碼時,需要把認為可能會出現異常的代碼包括在try語句塊內,處理異常的代碼包括在catch語句內。在程序執行時,如果try語句內的代碼出現錯誤,try會創建異常對象並拋出,catch捕獲異常對象,則catch語句塊內的代碼將會執行,這樣就可以處理異常錯誤了。
void fun1()
{
throw int();//拋出錯誤信息
}
int main()
{
try
{
fun1();
}
catch (int &e)//捕獲錯誤信息
{
cout << "Exception" << endl;
cout << e << endl;
}
return 0;
}
(9)javatrycatchthrow擴展閱讀
try是try..catch..finally塊中用來引導第一部分的關鍵字,用於聲明需要捕獲指定語句塊的異常
完整的使用方法是
try {
語句塊1
} catch (<? extends Throwable> e) {
語句塊2.1
} catch (<? extends Throwable> e) {
語句塊2.2
} catch (<? extends Throwable> e) {
語句塊2.3
...
} finally {
語句塊3
}
⑽ Java語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally
throws是獲取異常,throw是拋出異常,try是將會發生異常的語句括起來,從而進行異常的處理,catch是如果有異常就會執行他裡面的語句,而finally不論是否有異常都會進行執行的語句。
throw 僅用於方法定義後面,指示該方法可能會拋出什麼異常,使用該方法的方法必須處理該異常,或者再次拋出。
throws 用於當程序判斷發生異常時,用該語句拋出異常,或處理異常時再次拋出異常。
//下面三個關鍵字就是處理異常
try {
//這里放可能會發生異常的語句
} catch(Exception e) {
//這里處理異常
} finally {
//這里的語句必然會得到執行,不管異常發省與否,
//用於關閉資料庫,關閉連接等收尾操作(非必要)
}
java異常的一個簡單例子,比如我有一個除法方法
public int divide(int a, int b) {
return a / b;
}
但是這就有一個問題,當b是0時,程序會報錯。
如果引入異常,改成這樣
public int divide(int a, int b) throws Exception {
if (b == 0) {
throw new Exception("b = 0");
}
return a / b;
}
那麼調用端該怎麼用呢
public class ExceptionTest {
public static void main(String[] args) {
ExceptionTest et = new ExceptionTest();
try {
System.out.println(et.divide(12, 0));
} catch (Exception e) {
System.out.println("0不能做被除數");
}
}
public int divide(int a, int b) throws Exception {
if (b == 0) {
throw new Exception("b = 0");
}
return a / b;
}
}
程序可以繼續執行,不會中斷。