導航:首頁 > 編程語言 > java繼承exception

java繼承exception

發布時間:2022-06-04 23:28:01

java自定義異常,應該繼承Exception還是Runtime Exception,為什麼

runtimeException是Exception的一個子類型,自定義異常可以繼承Exception或其子類.

通常調用一下父類的構造方法。

public class MyException extends Exception {

public MyException() { super(); }

public MyException(String msg) { super(msg); }

public MyException(Throwable cause) { super(cause); }

public MyException(String msg, Throwable cause) { super(msg, cause); }

}


public String[] createArray(int length) throws MyException {

if (length < 0) {

throw new MyException("數組長度小於0,不合法");

}

return new String[length];

}

上面這個例子,你繼承RuntimeException也是沒問題的.通常繼承Exception,范圍更大.

Ⅱ java中,我自己創建了一個異常類(直接繼承Exception),throw 之後可以被捕獲但程序卻在繼續運行

因為被捕獲了,所以才會繼續運行。
就相當於 一個公司(一個完整的程序)中的某一個員工(一段代碼)發現了一個錯誤並處理了(顯示出來或者是丟棄了),沒有上報(沒有 throw ),公司還是會正常運行下去的。
try {
a = Motors.choseMotors(x,p.pd);
} catch (Exception e1) {
e1.printStackTrace();
throw e1;//添加上這一句試試
}
//員工上報了 throw ,公司領導知道後發現是個大問題,就會停工檢查

Ⅲ java中error和exception的區別

Error類和Exception類的父類都是throwable類,他們的區別是:
Error類一般是指與虛擬機相關的問題,如系統崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢等。對於這類錯誤的導致的應用程序中斷,僅靠程序本身無法恢復和和預防,遇到這樣的錯誤,建議讓程序終止。
Exception類表示程序可以處理的異常,可以捕獲且可能恢復。遇到這類異常,應該盡可能處理異常,使程序恢復運行,而不應該隨意終止異常。
Exception類又分為運行時異常(Runtime Exception)和受檢查的異常(Checked Exception ),運行時異常;ArithmaticException,IllegalArgumentException,編譯能通過,但是一運行就終止了,程序不會處理運行時異常,出現這類異常,程序會終止。而受檢查的異常,要麼用try。。。catch捕獲,要麼用throws字句聲明拋出,交給它的父類處理,否則編譯不會通過。

Ⅳ java中error和exception有什麼區別

1.如圖Exception 和 Error都繼承自Throwable類,由jdk api文檔中對該類的描述可以知道它是異常處理機制的基本組成類型。可以由虛擬機拋出或者編碼者自行拋出(throw)

Ⅳ java中自定義異常為何要繼承exception類

java.lang.Exception類是Java中所有異常的直接或間接父類。即Exception類是所有異常的根類。
1、異常的分類:
① 非運行時異常(Checked Exception)
② 運行時異常(Runtime Exception/Unchecked Exception)

public class Exception
extends Throwable
Exception 類及其子類是 Throwable 的一種形式,它指出了合理的應用程序想要捕獲的條件。
public class RuntimeException
extends Exception
RuntimeException 是那些可能在 Java 虛擬機正常運行期間拋出的異常的超類。
可能在執行方法期間拋出但未被捕獲的 RuntimeException 的任何子類都無需在 throws 子句中進行聲明。
a) RuntimeException類直接繼承自Exception類,稱為運行時異常。Java中所有的運行時異常都直接或間接的繼承自RuntimeException.
Java中所有的異常類都直接或間接的繼承自Exception。
2、異常的處理:
對應非運行時異常,必須對其進行處理。處理方式有兩種:
使用try…catch…finally語句塊進行捕獲
在產生異常的方法所在的方法聲明throws Exception
對於運行時異常,可以不對其進行處理,也可以對其進行處理。一般情況下都不對其進行處理。
3、捕獲異常:
try {
FileInputStream fs = new FileInputStream("D:/temp/a.txt");
} catch (FileNotFoundException e) {
System.out.println("catch...");
e.printStackTrace();
} finally{
System.out.println("finally...");
}

4、拋出和捕獲異常:
4.1、把異常交給JVM處理:
public class ExceptionTest {

public static void execute() throws Exception {
System.out.println("execute...");
throw new Exception();
}

public static void main(String[] args) throws Exception {
execute();
}
}

4.2、或者使用try catch語句塊捕獲異常:
public class ExceptionTest {

public static void execute() throws Exception {
System.out.println("execute...");
throw new Exception();
}

public static void main(String[] args) {
try {
execute();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}

5、自定義異常:
自定義異常通常是定義一個繼承自Exception類的子類。一般情況下我們都會直接繼承自Exception類,而不會繼承某個運行時的異常類。
5.1、創建自定義異常:
public class MyException extends Exception{
public MyException(){
super();
}
public MyException(String msg){
super(msg);
}
}

5.2、在類中使用異常:
public class ExceptionTest {

public static void execute(String a) throws MyException {
System.out.println("execute...");
if("true".equals(a)){
throw new MyException("參數不能為 true");
}
}
}

5.3、捕獲自定義異常:
public static void main(String[] args) throws MyException {

execute("true");
}

6、異常使用注意事項:
當使用多個catch語句塊來捕獲異常時,需要將父類的catch語句塊放到子類型的catch塊之後,這樣才能保證後續的catch可能被執行,否則子類型的catch將永遠無法到達,Java編譯器會報編譯錯誤。
如果try語句塊中存在return語句,那麼首先會執行finally語句塊中的代碼,然後才返回。
如果try語句塊中存在System.exit(0)語句,那麼久不會執行finally語句塊的代碼了,因為System.exit(0)會終止當前運行的JVM。程序在JVM終止前結束執行。

Ⅵ java中exception和error有什麼區別

首先從繼承方面來說,Error和Exception都是Throwable的子類。所以從根本上你可以理解他們是差不多的,程序出了問題就拋出。然後一般意義來講,區別就是Error比Exception更嚴重,不易通過後續代碼處理和修復,不應該被代碼catch到的錯誤。而Exception是指嚴重程度較輕的程序問題,相較於Error更容易被後續代碼處理和修復的,有些需要通過try catch代碼處理,有些不建議通過try catch代碼處理。

知識延伸:
Exception分兩種,checked和unchecked。checked Exception就是在寫代碼的時候,IDE(比如Eclipse)會要求你寫try catch的那種Exception,比如IOException。這種Exception是Java的設計者要求你的程序去處理的。這種異常一般不會影響程序的主體,容易手動診斷修復,所以Java要求你在catch下面寫出處理的代碼,以保證程序遇到此類exception之後還可以正常運行。unchecked這一類就是你在代碼處理了checked exception之後,你在運行時候依然會遇到的exception,所以又叫做RunTimeException,比如NullPointerException, IndexOutOfBoundsException。此類exception相較於前面那種更容易影響程序運行,從設計者角度不提倡從程序中catch出來並處理,當然你也可以這么做。

Error就是程序運行時候拋出的最嚴重級別的錯誤了,如VirtualMachineError,ThreadDeath。拋出了Error的程序從Java設計的角度來講,程序基本不可以通過後續代碼修復,從而理應終止。當然,從語法上來講,所有這些都可以被寫進catch裡面,但是Error因為上述原因,不應該被代碼處理。

Ⅶ java所有的異常類皆繼承哪一個類

個人認為你的答案是錯誤的,因為.java.lang.throwable是java.lang.exception的父類,所以所有的類應該都繼承了throwable個類吧。你說的異常的類,是只能抽象類了.某子類c,父類p.如果p是普通的類,則c不必重寫p內部的方法.重寫是可選的.如果p抽象類

Ⅷ java A繼承了Exception 為什麼不能寫throws A

classAextendsException{
intage=-100;
voidf()throwsA//A繼承了Exception為什麼不能寫throwsA
{
if(age<0){
Aa=newA();
throwa;
}
}
}

閱讀全文

與java繼承exception相關的資料

熱點內容
易語言源碼轉python 瀏覽:364
程序員日祝福 瀏覽:883
阿里tv助手app哪裡下載 瀏覽:187
app活動怎麼關 瀏覽:202
java改變map 瀏覽:348
解壓鋼琴呂恆 瀏覽:991
程序員怎麼獲取被動收入 瀏覽:568
能不能別讓編程貓打電話給我了 瀏覽:687
量線突破指標源碼 瀏覽:458
雲伺服器阿里環境搭建 瀏覽:123
錐孔是怎麼編程的 瀏覽:133
加強箍和加密箍的區別 瀏覽:897
怎麼在騰訊伺服器上傳文件 瀏覽:643
公司門戶app安卓怎麼卸載 瀏覽:990
單片機中段源 瀏覽:143
電腦桌面文件加密要怎樣解除 瀏覽:963
quickfoxapp的商場在哪裡 瀏覽:2
單片機與pc機通信畢業設計 瀏覽:221
wan口的伺服器默認賬號是什麼 瀏覽:177
取小數位數php 瀏覽:716