android常见异常总结
為什么80%的碼農都做不了架構師?>>> ??
Java中的異常分為兩大類:錯誤Error和異常Exception,Java異常體系結構如下圖所示:
Throwable
Throwable類是所有異常或錯誤的超類,它有兩個子類:Error和Exception,分別表示錯誤和異常。其中異常Exception分為運行時異常(RuntimeException)和非運行時異常,也稱之為不檢查異常(Unchecked Exception)和檢查異常(Checked Exception)。
Error
一般是指java虛擬機相關的問題,如系統崩潰、虛擬機出錯誤、動態鏈接失敗等,這種錯誤無法恢復或不可能捕獲,將導致應用程序中斷,通常應用程序無法處理這些錯誤,因此應用程序不應該捕獲Error對象,也無須在其throws子句中聲明該方法拋出任何Error或其子類。
下面是error總結
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 虛擬機錯誤。用于指示虛擬機被破壞或者繼續執行操作所需的資源不足的情況。運行時異常和非運行時異常
(1)運行時異常都是RuntimeException類及其子類異常,如NullPointerException、IndexOutOfBoundsException等,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯誤引起的,程序應該從邏輯角度盡可能避免這類異常的發生。
(2)非運行時異常是RuntimeException以外的異常,類型上都屬于Exception類及其子類。如 IOException、SQLException 等以及用戶自定義的Exception異常。對于這種異常,JAVA編譯器強制要求我們必需對出現的這些異常進行catch并處理,否則程序就不能編譯通過。所以,面對這種異常不管我們是否愿意,只能自己去寫一大堆catch塊去處理可能的異常。
java.lang.RuntimeException的直接子類有這些:
AnnotationTypeMismatchException ArithmeticException ArrayStoreException BufferOverflowException 緩沖區上溢異常 BufferUnderflowException 緩沖區下溢異常 CannotRedoException CannotUndoException ClassCastException CMMException ConcurrentModificationException DataBindingException DOMException EmptyStackException EnumConstantNotPresentException EventException IllegalArgumentException IllegalMonitorStateException IllegalPathStateException IllegalStateException ImagingOpException IncompleteAnnotationException IndexOutOfBoundsException JMRuntimeException LSException MalformedParameterizedTypeException MirroredTypeException MirroredTypesException MissingResourceException NegativeArraySizeException NoSuchElementException NoSuchMechanismException NullPointerException ProfileDataException ProviderException RasterFormatException RejectedExecutionException SecurityException SystemException TypeConstraintException TypeNotPresentException UndeclaredThrowableException UnknownAnnotationValueException UnknownElementException UnknownTypeException UnmodifiableSetException UnsupportedOperationException WebServiceException其中我們常見的異常有:
- java.lang.NullPointerException 空指針異常當應用程序試圖在需要對象的地方使用 null 時(也就是調用了未經初始化的對象或者是不存在的對象),拋出該異常- java.lang.ClassNotFoundException 指定的類不存在- ClassCastException 類轉換異常試圖將對象強制轉換為不是實例的子類時,拋出該異常- IllegalArgumentException 非法參數異常拋出的異常表明向方法傳遞了一個不合法或不正確的參數- IndexOutOfBoundsException 下標越界異常指示某排序索引(例如對數組、字符串或向量的排序)超出范圍時拋出- NumberFormatException:字符串轉換為數字類型時拋出的異常。- java.lang.ArithmeticException 算術條件異常 (比如除數為0時拋出異常)- java.lang.IllegalAccessException 沒有訪問權限異常當應用程序要調用一個類,但當前的方法即沒有對該類的訪問權限便會出現這個異常。對程序中用了Package的情況下要注意這個異常轉載于:https://my.oschina.net/fltsp/blog/719681
總結
以上是生活随笔為你收集整理的android常见异常总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS6配置部署Zabbix监控
- 下一篇: java集合归纳