java異常類型
㈠ java的異常類型有哪兩種
Throwable包含了錯誤(Error)和異常(Excetion兩類)
Exception又包含了運行時異常(RuntimeException, 又叫非檢查異常)和非運行時異常(又叫檢查異常)
(1) Error是程序無法處理了, 如果OutOfMemoryError、OutOfMemoryError等等, 這些異常發生時,
java虛擬機一般會終止線程 .
(2) 運行時異常都是RuntimeException類及其子類,如
NullPointerException、IndexOutOfBoundsException等, 這些異常是不檢查的異常, 是在程序運行的時候可能會發生的,
所以程序可以捕捉, 也可以不捕捉. 這些錯誤一般是由程序的邏輯錯誤引起的, 程序應該從邏輯角度去盡量避免.
(3) 檢查異常是運行時異常以外的異常, 也是Exception及其子類, 這些異常從程序的角度來說是必須經過捕捉檢查處理的, 否則不能通過編譯.
如IOException、sqlException等
㈡ Java 關於異常類
寫法1,RuntimeException:
public class InvalidScoreException extends RuntimeException {
private static final long serialVersionUID = 1L;
public InvalidScoreException() {
super("輸入錯誤:請輸入數字0-100");
}
}
public class Main {
public static void main(String[] args) {
int x = 101;
if (x < 0 || x > 100) {
throw new InvalidScoreException();
}
}
}
寫法2,普通Exception:
public class InvalidScoreException extends Exception {
private static final long serialVersionUID = 1L;
public InvalidScoreException() {
super("輸入錯誤:請輸入數字0-100");
}
}
public class Main {
public static void main(String[] args) throws InvalidScoreException {
int x = 101;
if (x < 0 || x > 100) {
throw new InvalidScoreException();
}
}
}
㈢ java系統中異常類共有多少
這個問題好籠統啊!
要說異常可以簡單的這樣分一下:
JAVA的所有異常的基類為Exception,所有的錯誤基類為Error。因為Exception是程序員經常使用,並且遇到的,所以使用的最多的也就只是Exception類以及它的子類。
如果要說多少,API裡面有找一下Exception類,然後看一下他的所有已知子類就可以知道是多少了。
這里要說一下,在JAVA中,存在兩種異常狀態。一種異常信息叫做「檢查異常(checked exception)」,另一種叫做「運行時異常(runtime exception)」。
檢查異常:
看一下下面的代碼:
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}catch(ClassNotFoundException ce){
}
Class.forName方法有可能拋出一個ClassNotFoundException異常,需要程序員強制進行捕獲,並進行異常處理。我們說這種異常信息叫做「檢查異常」,這些異常類通常都是Exception類的子類。
運行時異常:
看下面的代碼:
Integer.parseInt("10");
Integer.parseInt方法同樣也會拋出一個異常NumberFormatException,但是我們會發現,這個異常不需要我們強制進行異常捕獲。這種異常就叫做運行時異常。而這些異常類,通常是RuntimeException類的子類。(RuntimeException也是Exception的子類)
樓主如果是走JavaEE方向的,那麼以後在學習Hibernate,Spring,Struts這些框架的時候,就會發現。這些框架把所有的「檢查異常」都轉換成了「運行時異常」。
㈣ 2.java的異常類型有哪兩種
可以選擇三種方法來進行異常處理
1對代碼塊用try..catch進行異常捕獲處理;
2在 該代碼的方法體外用throws進行拋出聲明,告知此方法的調用者這段代碼可能會出現這些異常,你需要謹慎處理。此時有兩種情況:
如果聲明拋出的異常是非運行時異常,此方法的調用者必須顯示地用try..catch塊進行捕獲或者繼續向上層拋出異常。
如果聲明拋出的異常是運行時異常,此方法的調用者可以選擇地進行異常捕獲處理。
3在代碼塊用throw手動拋出一個異常對象,此時也有兩種情況,跟2)中的類似:
如果拋出的異常對象是非運行時異常,此方法的調用者必須顯示地用try..catch塊進行捕獲或者繼續向上層拋出異常。
如果拋出的異常對象是運行時異常,此方法的調用者可以選擇地進行異常捕獲處理。
(如果最終將異常拋給main方法,則相當於交給jvm自動處理,此時jvm會簡單地列印異常信息)
常處理和設計的建議
只在必要使用異常的地方才使用異常,不要用異常去控製程序的流程
切忌使用空catch塊
檢查異常和非檢查異常的選擇
注意catch塊的順序
不要將提供給用戶看的信息放在異常信息里
避免多次在日誌信息中記錄同一個異常
異常處理盡量放在高層進行
在finally中釋放資源
㈤ java 異常類
clone
protected Object clone()
throws CloneNotSupportedException
Creates and returns a of this object. The precise meaning of "" may depend on the class of the object. The general intent is that, for any object x, the expression:
x.clone() != x
will be true, and that the expression:
x.clone().getClass() == x.getClass()
will be true, but these are not absolute requirements. While it is typically the case that:
x.clone().equals(x)
will be true, this is not an absolute requirement.
By convention, the returned object should be obtained by calling super.clone. If a class and all of its superclasses (except Object) obey this convention, it will be the case that x.clone().getClass() == x.getClass().
By convention, the object returned by this method should be independent of this object (which is being cloned). To achieve this independence, it may be necessary to modify one or more fields of the object returned by super.clone before returning it. Typically, this means ing any mutable objects that comprise the internal "deep structure" of the object being cloned and replacing the references to these objects with references to the copies. If a class contains only primitive fields or references to immutable objects, then it is usually the case that no fields in the object returned by super.clone need to be modified.
The method clone for class Object performs a specific cloning operation. First, if the class of this object does not implement the interface Cloneable, then a CloneNotSupportedException is thrown. Note that all arrays are considered to implement the interface Cloneable. Otherwise, this method creates a new instance of the class of this object and initializes all its fields with exactly the contents of the corresponding fields of this object, as if by assignment; the contents of the fields are not themselves cloned. Thus, this method performs a "shallow " of this object, not a "deep " operation.
The class Object does not itself implement the interface Cloneable, so calling the clone method on an object whose class is Object will result in throwing an exception at run time.
Returns:
a clone of this instance.
Throws:
CloneNotSupportedException - if the object's class does not support the Cloneable interface. Subclasses that override the clone method can also throw this exception to indicate that an instance cannot be cloned.
See Also:
Cloneable
㈥ java怎麼判斷異常類型
1. java.lang.nullpointerexception
這個異常大家肯定都經常遇到,異常的解釋是"程序遇上了空指針",簡單地說就是調用了未經初始化的對象或者是不存在的對象,這個錯誤經常出現在創建圖片,調用數組這些操作中,比如圖片未經初始化,或者圖片創建時的路徑錯誤等等。對數組操作中出現空指針,很多情況下是一些剛開始學習編程的朋友常犯的錯誤,即把數組的初始化和數組元素的初始化混淆起來了。數組的初始化是對數組分配需要的空間,而初始化後的數組,其中的元素並沒有實例化,依然是空的,所以還需要對每個元素都進行初始化(如果要調用的話)
2. java.lang.classnotfoundexception
這個異常是很多原本在jb等開發環境中開發的程序員,把jb下的程序包放在wtk下編譯經常出現的問題,異常的解釋是"指定的類不存在",這里主要考慮一下類的名稱和路徑是否正確即可,如果是在jb下做的程序包,一般都是默認加上package的,所以轉到wtk下後要注意把package的路徑加上。
3. java.lang.arithmeticexception
這個異常的解釋是"數學運算異常",比如程序中出現了除以零這樣的運算就會出這樣的異常,對這種異常,大家就要好好檢查一下自己程序中涉及到數學運算的地方,公式是不是有不妥了。
4. java.lang.
這個異常相信很多朋友也經常遇到過,異常的解釋是"數組下標越界",現在程序中大多都有對數組的操作,因此在調用數組的時候一定要認真檢查,看自己調用的下標是不是超出了數組的范圍,一般來說,顯示(即直接用常數當下標)調用不太容易出這樣的錯,但隱式(即用變數表示下標)調用就經常出錯了,還有一種情況,是程序中定義的數組的長度是通過某些特定方法決定的,不是事先聲明的,這個時候,最好先查看一下數組的length,以免出現這個異常。
5. java.lang.illegalargumentexception
這個異常的解釋是"方法的參數錯誤",很多j2me的類庫中的方法在一些情況下都會引發這樣的錯誤,比如音量調節方法中的音量參數如果寫成負數就會出現這個異常,再比如g.setcolor(int red,int green,int blue)這個方法中的三個值,如果有超過255的也會出現這個異常,因此一旦發現這個異常,我們要做的,就是趕緊去檢查一下方法調用中的參數傳遞是不是出現了錯誤。
6. java.lang.illegalaccessexception
這個異常的解釋是"沒有訪問許可權",當應用程序要調用一個類,但當前的方法即沒有對該類的訪問許可權便會出現這個異常。對程序中用了package的情況下要注意這個異常。
其他還有很多異常,我就不一一列舉了,我要說明的是,一個合格的程序員,需要對程序中常見的問題有相當的了解和相應的解決辦法,否則僅僅停留在寫程序而不會改程序的話,會極大影響到自己的開發的。關於異常的全部說明,在api里都可以查閱。
算術異常類:ArithmeticExecption
空指針異常類:NullPointerException
類型強制轉換異常:ClassCastException
數組負下標異常:NegativeArrayException
數組下標越界異常:
違背安全原則異常:SecturityException
文件已結束異常:EOFException
文件未找到異常:FileNotFoundException
字元串轉換為數字異常:NumberFormatException
操作資料庫異常:SQLException
輸入輸出異常:IOException
方法未找到異常:NoSuchMethodException
java.lang.AbstractMethodError
抽象方法錯誤。當應用試圖調用抽象方法時拋出。
java.lang.AssertionError
斷言錯。用來指示一個斷言失敗的情況。
java.lang.ClassCircularityError
類循環依賴錯誤。在初始化一個類時,若檢測到類之間循環依賴則拋出該異常。
java.lang.ClassFormatError
類格式錯誤。當Java虛擬機試圖從一個文件中讀取Java類,而檢測到該文件的內容不符合類的有效格式時拋出。
java.lang.Error
錯誤。是所有錯誤的基類,用於標識嚴重的程序運行問題。這些問題通常描述一些不應被應用程序捕獲的反常情況。
java.lang.ExceptionInInitializerError
初始化程序錯誤。當執行一個類的靜態初始化程序的過程中,發生了異常時拋出。靜態初始化程序是指直接包含於類中的static語句段。
java.lang.IllegalAccessError
違法訪問錯誤。當一個應用試圖訪問、修改某個類的域(Field)或者調用其方法,但是又違反域或方法的可見性聲明,則拋出該異常。
java.lang.IncompatibleClassChangeError
不兼容的類變化錯誤。當正在執行的方法所依賴的類定義發生了不兼容的改變時,拋出該異常。一般在修改了應用中的某些類的聲明定義而沒有對整個應用重新編譯而直接運行的情況下,容易引發該錯誤。
java.lang.InstantiationError
實例化錯誤。當一個應用試圖通過Java的new操作符構造一個抽象類或者介面時拋出該異常.
java.lang.InternalError
內部錯誤。用於指示Java虛擬機發生了內部錯誤。
java.lang.LinkageError
鏈接錯誤。該錯誤及其所有子類指示某個類依賴於另外一些類,在該類編譯之後,被依賴的類改變了其類定義而沒有重新編譯所有的類,進而引發錯誤的情況。
java.lang.NoClassDefFoundError
未找到類定義錯誤。當Java虛擬機或者類裝載器試圖實例化某個類,而找不到該類的定義時拋出該錯誤。
java.lang.NoSuchFieldError
域不存在錯誤。當應用試圖訪問或者修改某類的某個域,而該類的定義中沒有該域的定義時拋出該錯誤。
java.lang.NoSuchMethodError
方法不存在錯誤。當應用試圖調用某類的某個方法,而該類的定義中沒有該方法的定義時拋出該錯誤。
java.lang.OutOfMemoryError
內存不足錯誤。當可用內存不足以讓Java虛擬機分配給一個對象時拋出該錯誤。
java.lang.StackOverflowError
堆棧溢出錯誤。當一個應用遞歸調用的層次太深而導致堆棧溢出時拋出該錯誤。
java.lang.ThreadDeath
線程結束。當調用Thread類的stop方法時拋出該錯誤,用於指示線程結束。
java.lang.UnknownError
未知錯誤。用於指示Java虛擬機發生了未知嚴重錯誤的情況。
java.lang.UnsatisfiedLinkError
未滿足的鏈接錯誤。當Java虛擬機未找到某個類的聲明為native方法的本機語言定義時拋出。
java.lang.UnsupportedClassVersionError
不支持的類版本錯誤。當Java虛擬機試圖從讀取某個類文件,但是發現該文件的主、次版本號不被當前Java虛擬機支持的時候,拋出該錯誤。
java.lang.VerifyError
驗證錯誤。當驗證器檢測到某個類文件中存在內部不兼容或者安全問題時拋出該錯誤。
java.lang.VirtualMachineError
虛擬機錯誤。用於指示虛擬機被破壞或者繼續執行操作所需的資源不足的情況。
java.lang.ArithmeticException
算術條件異常。譬如:整數除零等。
java.lang.
數組索引越界異常。當對數組的索引值為負數或大於等於數組大小時拋出。
java.lang.ArrayStoreException
數組存儲異常。當向數組中存放非數組聲明類型對象時拋出。
java.lang.ClassCastException
類造型異常。假設有類A和B(A不是B的父類或子類),O是A的實例,那麼當強制將O構造為類B的實例時拋出該異常。該異常經常被稱為強制類型轉換異常。
java.lang.ClassNotFoundException
找不到類異常。當應用試圖根據字元串形式的類名構造類,而在遍歷CLASSPAH之後找不到對應名稱的class文件時,拋出該異常。
java.lang.CloneNotSupportedException
不支持克隆異常。當沒有實現Cloneable介面或者不支持克隆方法時,調用其clone()方法則拋出該異常。
java.lang.
枚舉常量不存在異常。當應用試圖通過名稱和枚舉類型訪問一個枚舉對象,但該枚舉對象並不包含常量時,拋出該異常。
java.lang.Exception
根異常。用以描述應用程序希望捕獲的情況。
java.lang.IllegalAccessException
違法的訪問異常。當應用試圖通過反射方式創建某個類的實例、訪問該類屬性、調用該類方法,而當時又無法訪問類的、屬性的、方法的或構造方法的定義時拋出該異常。
java.lang.IllegalMonitorStateException
違法的監控狀態異常。當某個線程試圖等待一個自己並不擁有的對象(O)的監控器或者通知其他線程等待該對象(O)的監控器時,拋出該異常。
java.lang.IllegalStateException
違法的狀態異常。當在Java環境和應用尚未處於某個方法的合法調用狀態,而調用了該方法時,拋出該異常。
java.lang.IllegalThreadStateException
違法的線程狀態異常。當縣城尚未處於某個方法的合法調用狀態,而調用了該方法時,拋出異常。
java.lang.IndexOutOfBoundsException
索引越界異常。當訪問某個序列的索引值小於0或大於等於序列大小時,拋出該異常。
java.lang.InstantiationException
實例化異常。當試圖通過newInstance()方法創建某個類的實例,而該類是一個抽象類或介面時,拋出該異常。
java.lang.InterruptedException
被中止異常。當某個線程處於長時間的等待、休眠或其他暫停狀態,而此時其他的線程通過Thread的interrupt方法終止該線程時拋出該異常。
java.lang.NegativeArraySizeException
數組大小為負值異常。當使用負數大小值創建數組時拋出該異常。
java.lang.NoSuchFieldException
屬性不存在異常。當訪問某個類的不存在的屬性時拋出該異常。
java.lang.NoSuchMethodException
方法不存在異常。當訪問某個類的不存在的方法時拋出該異常。
java.lang.NullPointerException
空指針異常。當應用試圖在要求使用對象的地方使用了null時,拋出該異常。譬如:調用null對象的實例方法、訪問null對象的屬性、計算null對象的長度、使用throw語句拋出null等等。
java.lang.NumberFormatException
數字格式異常。當試圖將一個String轉換為指定的數字類型,而該字元串確不滿足數字類型要求的格式時,拋出該異常。
java.lang.RuntimeException
運行時異常。是所有Java虛擬機正常操作期間可以被拋出的異常的父類。
java.lang.SecurityException
安全異常。由安全管理器拋出,用於指示違反安全情況的異常。
java.lang.
字元串索引越界異常。當使用索引值訪問某個字元串中的字元,而該索引值小於0或大於等於序列大小時,拋出該異常。
java.lang.TypeNotPresentException
類型不存在異常。當應用試圖
㈦ Java中的兩種異常類型是什麼他們有什麼區別
Java中有兩種異常:受檢查的(checked)異常和不受檢查的(unchecked)異常。
不受檢查的異常不需要在方法或者是構造函數上聲明,就算方法或者是構造函數的執行可能會拋出這樣的異常,並且不受檢查的異常可以傳播到方法或者是構造函數的外面。
相反,受檢查的異常必須要用throws語句在方法或者是構造函數上聲明。
㈧ java 程序中的錯誤有三種類型分別是什麼
錯誤,分為編碼錯誤,運行錯誤,jvm內部錯誤。
編碼錯誤在eclipse等開發工具 中可以直觀的看到,這種錯誤比較少見。
運行錯誤,又稱運行時異常,這是代碼邏輯錯誤導致的,發生這種錯誤時一定要靜下心,從程序入口處尋找錯誤誘因。
jvm內部錯誤屬於Java虛擬機內部錯誤,比較少見,發生這種錯誤時,建議重啟計算機。
㈨ 常見的java異常有哪些都是什麼意思
1、ArithmeticException - 算術運算中,被0除或模除。
2、 - 數組越界訪問。
3、ArrayStoreException - 數據存儲異常,寫數組操作時,對象或數據類型不兼容。
4、ClassCastException - 類型轉換異常。
5、IllegalArgumentException - 方法的參數無效。
6、IllegalThreadStateException - 試圖非法改變線程狀態,比方說試圖啟動一已經運行的線程。
7、NullPointerException - 試圖訪問一空對象的變數、方法或空數組的元素
8、NumberFormatException - 數據格式異常,試圖把一字元串非法轉換成數值(或相反)。
9、SecurityException - 如果Applet試圖執行一被WWW瀏覽器安全設置所禁止的操作。
10、 - 如改變了某一類定義,卻沒有重新編譯其他引用了這個類的對象。如某一成員變數的聲明被從靜態改變為非靜態,但其他引用了這個變數的類卻沒有重新編譯,或者相反。
11、OutOfMemoryException - 內存不足,通常發生於創建對象之時。
12、NoClassDefFoundException - JAVA運行時系統找不到所引用的類。
13、IncompatibleTypeException - 試圖實例化一個介面,Java運行時系統將拋出這個異常。
14、UnsatisfiedLinkException - 如果所需調用的方法是C函數,但Java運行時系統卻無法連接這個函數。
15、InternalException - 系統內部故障所導致的異常情況,可能是因為Java運行時系統本身的原因。如果發現一可重現的InternalException,可以直接給Sun公司發電郵[email protected]。