Java編程中常見的異常

2021-02-19 學java學前端

    這個異常大家肯定都經常遇到,異常的解釋是"程序遇上了空指針",簡單地說就是調用了未經初始化的對象或者是不存在的對象,這個錯誤經常出現在創建圖片,調用數組這些操作中,比如圖片未經初始化,或者圖片創建時的路徑錯誤等等。對數組操作中出現空指針,很多情況下是一些剛開始學習編程的朋友常犯的錯誤,即把數組的初始化和數組元素的初始化混淆起來了。數組的初始化是對數組分配需要的空間,而初始化後的數組,其中的元素並沒有實例化,依然是空的,所以還需要對每個元素都進行初始化(如果要調用的話)

2.java.lang.classnotfoundexception

    這個異常是很多原本在jb等開發環境中開發的程式設計師,把jb下的程序包放在wtk下編譯經常出現的問題,異常的解釋是"指定的類不存在",這裡主要考慮一下類的名稱和路徑是否正確即可,如果是在jb下做的程序包,一般都是默認加上package的,所以轉到wtk下後要注意把package的路徑加上。

3.java.lang.arithmeticexception 

    這個異常的解釋是"數學運算異常",比如程序中出現了除以零這樣的運算就會出這樣的異常,對這種異常,大家就要好好檢查一下自己程序中涉及到數學運算的地方,公式是不是有不妥了。 

4.java.lang.arrayindexoutofboundsexception

    這個異常相信很多朋友也經常遇到過,異常的解釋是"數組下標越界",現在程序中大多都有對數組的操作,因此在調用數組的時候一定要認真檢查,看自己調用的下標是不是超出了數組的範圍,一般來說,顯示(即直接用常數當下標)調用不太容易出這樣的錯,但隱式(即用變量表示下標)調用就經常出錯了,還有一種情況,是程序中定義的數組的長度是通過某些特定方法決定的,不是事先聲明的,這個時候,最好先查看一下數組的length,以免出現這個異常。 

5.java.lang.illegalargumentexception

    這個異常的解釋是"方法的參數錯誤",很多j2me的類庫中的方法在一些情況下都會引發這樣的錯誤,比如音量調節方法中的音量參數如果寫成負數就會出現這個異常,再比如g.setcolor(int red,int green,int blue)這個方法中的三個值,如果有超過255的也會出現這個異常,因此一旦發現這個異常,我們要做的,就是趕緊去檢查一下方法調用中的參數傳遞是不是出現了錯誤。 

6.java.lang.illegalaccessexception

    這個異常的解釋是"沒有訪問權限",當應用程式要調用一個類,但當前的方法即沒有對該類的訪問權限便會出現這個異常。對程序中用了package的情況下要注意這個異常。 

其餘各種異常:

算術異常類:ArithmeticExecption 

空指針異常類:NullPointerException 

類型強制轉換異常:ClassCastException 

數組負下標異常:NegativeArrayException 

數組下標越界異常:ArrayIndexOutOfBoundsException 

違背安全原則異常: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.ArrayIndexOutOfBoundsException 

數組索引越界異常。當對數組的索引值為負數或大於等於數組大小時拋出。 

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.EnumConstantNotPresentException 

枚舉常量不存在異常。當應用試圖通過名稱和枚舉類型訪問一個枚舉對象,但該枚舉對象並不包含常量時,拋出該異常。 

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.StringIndexOutOfBoundsException 

字符串索引越界異常。當使用索引值訪問某個字符串中的字符,而該索引值小於0或大於等於序列大小時,拋出該異常。 

java.lang.TypeNotPresentException 

類型不存在異常。當應用試圖

相關焦點

  • Java認證:java運行時常見異常
    總結了幾個JAVA中常見的RuntimeException:  NullPointerException:空指針異常類  示例:  package com.darkmi.basic;  public class Test {  public static void
  • java NullPointerException異常處理
    java語言與其他程式語言不同,它有嚴格的異常處理機制,如果需要拋出異常的代碼塊中沒有捕獲異常,程序將不會成功編譯,換言之:未使用異常捕獲、異常捕獲方式不正確等,都將導致代碼不能被jvm編譯。常見的java異常類有:IOException, SocketTimeoutException, UnknownHostException, MalformedURLException、NullPointerException等。
  • Java常見異常及解釋
    常見 Java 異常解釋:(譯者註:非技術角度分析。
  • Java項目中常見的異常產生原因及處理辦法
    使用throw語句可以隨時拋出這種異常對象:throw new ArithmeticException(…);二、異常發生的原因有很多,通常包含以下幾大類:三、幾種常見的異常及其產生原因1、java.lang.NullPointerException(空指針異常)原因:這個異常大家肯定都經常遇到,異常的解釋是"程序遇上了空指針",即,調用了未經初始化的對象或者是不存在的對象
  • Java異常面試問題
    運行時異常是由錯誤的編程引起的,例如嘗試從Array中檢索元素。我們應該在嘗試檢索元素之前先檢查數組的長度,否則它可能會ArrayIndexOutOfBoundException在運行時拋出。RuntimeException是所有運行時異常的父類。Java異常類的重要方法是什麼?
  • Java 中的異常和處理詳解
    Java中的異常可以是函數中的語句執行時引發的,也可以是程式設計師通過throw 語句手動拋出的,只要在Java程序中產生了異常,就會用一個對應類型的異常對象來封裝異常,JRE就會試圖尋找異常處理程序來處理異常。Throwable類是Java異常類型的頂層父類,一個對象只有是 Throwable 類的(直接或者間接)實例,他才是一個異常對象,才能被異常處理機制識別。
  • 為什麼函數式編程在Java中很危險?
    在我的日常工作中,我身邊的開發者大多是畢業於CS編程頂級院校比如MIT、CMU以及Chicago,他們初次涉及的語言是Haskell、Scheme及Lisp。他們認為函數式編程是一種自然的、直觀的、美麗的且高效的編程樣式。
  • Java認證:Java編程中實現中文排序
    Java認證:Java編程中實現中文排序  第一種情況:  Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);  String[] arr = { 「張三」, 「李四」, 「王五」, 「劉六」 };
  • 最常見的網站程式語言
    作為網站SEOer筆者小丹本身對於優化運營技術要優於代碼,但是如果你對網站程式語言一竅不通那麼你只能成為是一個網站編輯而不是一位合格的SEOer。所以今天筆者小丹要和大家放開關於純粹的優化技術而來了解一下目前最常見的網站程式語言,讓我們能夠更好的為網站運營服務。
  • 最常見的10種Java異常問題!
    前言本文總結了有關Java異常的十大常見問題。目錄檢查型異常(checked) vs. 非檢查型異常(Unchecked)為什麼在try代碼塊中聲明的變量不能在catch或者finally中被引用?為什麼 Double.parseDouble(null) 和 Integer.parseInt(null) 拋出的異常不一樣呢?
  • 常見的類加載異常
    上篇文章回顧了一下類加載的委派模型和類加載的三個階段所做的一些事情,本篇文章準備介紹一下 Java 程序運行中常見的類加載異常。
  • 詳解Java網絡編程
    埠和套接字當網絡中的兩臺計算機進行通信時,除了確定計算機在網絡中的IP外,還需要確定計算機中的一個埠,埠並不是實際的物理設備,它是一個應用程式,這個應用程式來負責兩臺計算機的通信。一個IP標識了一臺主機(伺服器),主機可以提供多種服務,如web服務、ftp服務、遠程桌面等。主機的每個服務都會等待客戶端的連接,客戶端如何區別這些服務呢?
  • java編程從入門到放棄?關於Java自學,我的3點思考
    我個人覺得java學習大致可以按這3個階段來:第一階段:基礎課程學習包含Java開發介紹、Java數組、Java面向對象、常用基礎類、集合、IO流、多線程、異常、反射等;>第二階段:java Web包含HTML5課程、CSS3、JavaScript、MySQL使用、JDBC連接池、Servlet、JSP、AJAX、jQuery、Bootstrap。
  • 函數式編程二 異常處理
    基礎函數式編程一在java中用函數式的方式去做事情,Happy Path確實很好玩,但是編程中最不好玩的就是異常的情況。
  • Java四大名著是什麼?java程式設計師提高技能的經典編程書籍推薦
    高薪程式設計師必讀的幾本書,基礎編程書籍推薦》,下面,再針對java程式設計師,梳理一些常見的圖書,期望對正在使用java編程的小夥伴有參考。學任何語言,基本的語法知識不能少,首推,Java四大名著( java編程思想+Effective java中文版+Java核心技術卷12),下面來具體介紹以下包含Java四大名著在內的java程式設計師類圖書。
  • JAVA異常及其異常處理方式
    比如說,你的代碼少了一個分號,那麼運行出來結果是提示是錯誤 java.lang.Error;如果你用System.out.println(100/0),那麼你是因為你用0做了除數,會拋出 java.lang.ArithmeticException 的異常。
  • 面試重災區:Java的異常體系怎麼解?
    Java的異常體系結構Java異常體系的根類是 Throwable, 所以當寫在java代碼中寫throw拋出異常時,後面跟的對象必然是Throwable或其子類的對象。其中Exception異常是指一些可以恢復的異常, 例如常見的NullPointerException空指針異常。
  • Java程式設計師必備:異常的十個關鍵知識點
    異常十個關鍵知識點,面試或者工作中都有用哦,加油。當前的執行路徑被終止,並且從當前環境中彈出對異常對象的引用。這時候異常處理程序,使程序從錯誤狀態恢復,使程序繼續運行下去。異常處理主要有拋出異常、捕獲異常、聲明異常。
  • 原創】Java並發編程系列01|開篇獲獎感言
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫為什麼要學並發編程我曾聽一個從事15年開發工作的技術人員說過如今硬體的驅動和網際網路行業的飛速發展,64核的處理器已經是很常見了,大型互聯廠商的系統並發量輕鬆過百萬,傳統的中間件和資料庫肯定是不能幫我們遮風避雨了,我們只能通過並發編程來解決這些問題。所以,並發編程已經成為一項必備技能。
  • 跟我學java編程—Java字符串類型
    在Java語言中,字符串類型被定義為類,類名為「String」,該類提供了多個構造方法和字符串操作方法,用於滿足對字符串不同的處理要求。String類的初始化String類可用字符串常量對其初始化。編譯「StringInitSample.java」文件,在命令行窗口輸入「javac StringInitSample.java」並執行命令,編譯通過後,在命令行窗口輸入「java StringInitSample」運行Java程序,命令行窗口顯示如下信息: