throw 僅用于方法定義后面,指示該方法可能會拋出什么異常,使用該方法的方法必須處理該異常,或者再次拋出。
創新互聯建站專注于企業成都全網營銷推廣、網站重做改版、成華網站定制設計、自適應品牌網站建設、HTML5建站、成都商城網站開發、集團公司官網建設、外貿網站制作、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為成華等各大城市提供網站開發制作服務。
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;
}
}
程序可以繼續執行,不會中斷。
Java語言提供兩種異常處理機制:捕獲異常和聲明拋棄異常。
1、捕獲異常:
(1)在Java程序運行過程中系統得到一個異常對象是,它將會沿著方法的調用棧逐層回溯,尋找處理這一異常的代碼。
(2)找到能夠處理這種類型異常的方法后,運行時系統把當前異常交給這個方法處理;如果找不到可以捕獲異常的方法,則運行時系統將終止,相應的Java程序也將退出。
(3)捕獲異常是通過try-catch-finally語句實現的。語法為:
try{
...
}catch(ExceptionName1 e){
...
}catch(ExceptionName2 e){
...
}
...
}finally{
...
}
2、聲明拋棄異常:
(1)當Java程序運行時系統得到一個異常對象時,如果一個方法并不知道如何處理所出現的異常,則可在方法聲明時,聲明拋棄異常。
(2)聲明拋棄異常是在一個方法聲明中的throws子句中指明的。如:
public int read()() throws IOException{
...
}
其中throws IOException就是聲明拋棄異常,throws后可以跟多個異常類型。
擴展資料:
程序設計語言的異常機制:
1、多數語言的異常機制的語法是類似的:用throw或raise拋出一個異常對象(Java或C++等)或一個特殊可擴展的枚舉類型的值(如Ada語言);
2、異常處理代碼的作用范圍用標記子句(try或begin開始的語言作用域)標示其起始,以第一個異常處理子句(catch, except, resuce等)標示其結束;可連續出現若干個異常處理子句,每個處理特定類型的異常。
3、某些語言允許else子句,用于無異常出現的情況。更多見的是finally, ensure子句,無論是否出現異常它都將執行,用于釋放異常處理所需的一些資源。
(1)C++異常處理是資源獲取即初始化(Resource-Acquisition-Is-Initialization)的基礎。
(2)C語言一般認為是不支持異常處理的。Perl語言可選擇支持結構化異常處理(structured exception handling)。
(3)Python語言對異常處理機制是非常普遍深入的,所以想寫出不含try, except的程序非常困難。
參考資料來源:
百度百科-異常處理
import java.util.Scanner;
public class ExceptionDemo {
public static void main(String[] args) {
double op1,op2,r;
Scanner sc=new Scanner(System.in);
System.out.println("請輸入兩個double型的參數");
op1=sc.nextDouble();
op2=sc.nextDouble();
try {
r=div(op1,op2);
}
catch(MyException ex) {
System.out.println(ex.getMessage());
do {
System.out.println("除數為0,請重新輸入操作數2的值!");
op2=op2=sc.nextDouble();
}while(0==op2);
}
finally {
System.out.println(""+op1+"/"+op2+"的結果是:"+(op1/op2));
}
sc.close();
}
static double div(double op1,double op2) throws MyException {
if(0==op2) {
throw new MyException("自定義異常,除數為0異常");
}
return op1/op2;
}
}
class MyException extends Exception {
MyException(String msg) {
super(msg);
}
}
public class DevideZeroException extends RuntimeException// (1)//自定義異常類DevideZeroException來表示除數為0錯誤
{
public DevideZeroException() {
super("除數不能為零!");// (2)("除數不能為零!");
}
public DevideZeroException(String message) {
super(message);// ( 3 )
}
}
public class Test {
public static void main(String[] args) {
try {
int a = 10;
int b = 0;
if (b == 0 /* (4) */) {/* (5) */
throw new DevideZeroException();
} else {
System.out.println(a / b);
}
} catch (DevideZeroException e) {
System.out.println(e.getMessage()/* (6) */);
} finally {
System.out.println("end");
}
}
}
運行結果:
除數不能為零!
end
文章題目:java除法異常處理代碼 java除法語句
網頁網址:http://vcdvsql.cn/article10/dopjido.html
成都網站建設公司_創新互聯,為您提供品牌網站建設、網站建設、網站收錄、標簽優化、建站公司、
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯