copy from: https://blog.csdn.net/kangguang/article/details/79177336編程
在開發中,若是去調用別人寫的方法時,是否能知作別人寫的方法是否會發生異常?這是很難判斷的。針對這種狀況,Java總容許在方法的後面使用throws關鍵字對外聲明該方法有可能發生異常,這樣調用者在調用方法時,就明確地知道該方法有異常,而且必須在程序中對異常進行處理,不然編譯沒法經過。ide
以下面代碼.net
package www.kangxg.jdbc;
public class Example {
public static void main(String[] args) {
// TODO Auto-generated method stub
int result = divide(4,2);
System.out.println(result);
}
public static int divide(int x,int y) throws Exception
{
int result = x/y;
return result;
}
}
這時候 編譯器上會有錯誤提示 Unhandled exception type Exception
因此須要對調用divide()方法進行try...catch處理debug
package www.kangxg.jdbc;
public class Example {
public static void main(String[] args) {
try {
int result = divide(4,2);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
public static int divide(int x,int y) throws Exception
{
int result = x/y;
return result;
}
}
debug 運行程序blog
當 調用divide()方法時,若是不知道如何處理聲明拋出的異常,也可使用throws 關鍵字繼續拋異常,這樣程序也能編譯運行。可是注意的是,程序一旦發生異常,若是沒有被處理,程序就會非正常終止。以下:繼承
package www.kangxg.jdbc;
public class Example {
public static void main(String[] args) throws Exception {
int result = divide(4,0);
System.out.println(result);
}
public static int divide(int x,int y) throws Exception
{
int result = x/y;
return result;
}
}
開發
debug運行程序get
Java 運行時異常與編譯時異常編譯器
1. 編譯時異常io
在Java 中,Exception類中除了RuntimeException 類及其子類外都是編譯時異常。編譯時異常的特色是Java編譯器會對其進行檢查,若是出現異常就必須對異常進行處理,不然程序沒法編譯經過。
處理方法
使用try... catch 語句對異常進行捕獲
使用throws 關鍵字聲明拋出異常,調用者對其進行處理
2.運行時異常
RuntimeException 類及其子類運行異常。運行時異常的特色是Java編譯器不會對其進行檢查。也就是說,當程序中出現這類異常時,即便沒有使用try... catch 語句捕獲使用throws關鍵字聲明拋出。程序也能編譯經過。運行時異常通常是程序中的邏輯錯誤引發的,在程序運行時沒法修復。例如 數據取值越界。
三 自定義異常
JDK中定義了大量的異常類,雖然這些異常類能夠描述編程時出現的大部分異常狀況,可是在程序開發中有時可能須要描述程序中特有的異常狀況。例如divide()方法中不容許被除數爲負數。爲類解決這個問題,在Java中容許用戶自定義異常,但自定義的異常類必須繼承自Exception或其子類。例子以下
package www.kangxg.jdbc;
public class DivideDivideByMinusException extends Exception {
/**
*
*/
private static final long serialVersionUID = 1L;
public DivideDivideByMinusException(){
super();
}
public DivideDivideByMinusException(String message)
{
super(message);
}
}
package www.kangxg.jdbc; public class Example { public static void main(String[] args) throws Exception { try { int result = divide(4,-2); System.out.println(result); } catch (DivideDivideByMinusException e) { System.out.println(e.getMessage()); } } public static int divide(int x,int y) throws DivideDivideByMinusException { if(y<0) { throw new DivideDivideByMinusException("被除數是負數"); } int result = x/y; return result; } }————————————————版權聲明:本文爲CSDN博主「清雨未盡時」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/kangguang/article/details/79177336