本文目錄一覽:
- 1、java 程序中的三種錯誤類型分別是什麼?
- 2、java報錯怎麼辦?
- 3、Java編程中常見的錯誤有哪些
- 4、java安裝錯誤1601?
- 5、java中錯誤(error)和異常(exception)有什麼主要區別?
- 6、在java中常出現的異常和解決方法?
java 程序中的三種錯誤類型分別是什麼?
錯誤,分為編碼錯誤,運行錯誤,jvm內部錯誤。
編碼錯誤在eclipse等開發工具 中可以直觀的看到,這種錯誤比較少見。
運行錯誤,又稱運行時異常,這是代碼邏輯錯誤導致的,發生這種錯誤時一定要靜下心,從程序入口處尋找錯誤誘因。
jvm內部錯誤屬於Java虛擬機內部錯誤,比較少見,發生這種錯誤時,建議重啟計算機。
java報錯怎麼辦?
文件裡面,在value的後面加上“+” 然後再”轉成Object就行了。
jre運行環境中的rt.jar包中的sun.net.;不能解析到,我看了下,我jdk1.7包中是有這個類的,但是代碼中總是報錯:
The type FtpClient is not accessible due to restriction on required library D:\jdk\jre\lib\rt.jar
解決辦法:試了各種辦法,包括替換sdk等,都不行,其實是Eclipse設置問題,最終方法如下:
方法一:
全局屬性ProjectpreferencesjavaCompilerErrors/Warnings把右側的【Deprecated and restricted APIForbidden reference】的Error置為Warning即可。
方法二(終極方法):
項目屬性preferencesjava build path把右側【libraries中的JRE System Library】刪除重新導入.
問題出現:用apktool 工具回編一個apk時,回編失敗,看了下日誌,沒有什麼資源衝突或屬性找不到的問題,報了以下錯誤:
Caused by: java.io.IOException: CreateProcess error=206, 文件名或擴展名太長
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.init(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
… 8 more
原因是:window 上 執行命名exe cmd 有字符串長度限制8192個字符串。
Java編程中常見的錯誤有哪些
錯誤就是error,它不同於異常。有時候程序不發生異常是不會出問題的,但有錯誤一定有問題。
常見的錯誤:編寫錯誤,語句錯誤—這兩個編譯器會提醒,也就是常用的eclipse;
邏輯錯誤,這個要看你自己的邏輯思維了。
潛在錯誤,也就是編寫語句邏輯都沒有問題,但jvm檢測有問題,就需要你自己找了,通常潛在錯誤都有邏輯問題。
java安裝錯誤1601?
當前發現出現java安裝出現1603錯誤的主要原因:最大可能:安裝路徑不是默認的安裝路徑,而是用戶自定義安裝的,並且安裝路徑有中文,一般就會出現這個錯誤。另外一個可能:電腦是32位系統,但是安裝的jdk64位的,也可能會出現這個問題。其餘可能:如安裝過程中內存不足,程序本身有缺陷等等都是可能的。解決辦法:重新安裝符合電腦位數的jdk(針對32位系統只能安裝32位的jdk);安裝jdk過程中,選擇安裝路徑不要出現中文。如果是內存不足的,可以換個磁盤安裝,如果還是安裝不上的話,建議重新下載jdk進行安裝。
java中錯誤(error)和異常(exception)有什麼主要區別?
1.如圖Exception 和 Error都繼承自Throwable類,由jdk api文檔中對該類的描述可以知道它是異常處理機制的基本組成類型。可以由虛擬機拋出或者編碼者自行拋出(throw)
jdk8中文發翻譯Throwable類的描述:Throwable類是Java語言中所有錯誤和異常的Throwable類。 只有作為此類(或其一個子類)的實例的對象由Java虛擬機拋出,或者可以由Java throw語句拋出。 類似地,只有這個類或其子類可以是catch子句中的參數類型。
2.Exception 和 Error 體現了 Java 平台設計者對不同異常情況的分類。Exception 是程序正常運行中,可以預料的意外情況,可能並且應該被捕獲,進行相應處理。
3.Error 是指在正常情況下,不大可能出現的情況,絕大部分的 Error 都會導致程序(比如 JVM 自身)處於非正常的、不可恢復狀態。既然是非正常情況,所以不便於也不需要捕獲,常見的比如 OutOfMemoryError 之類,都是 Error 的子類。
4.Exception 又分為可檢查(checked)異常和不檢查(unchecked)異常,可檢查異常在源代碼里必須顯式地進行捕獲處理,這是編譯期檢查的一部分。前面我介紹的不可查的 Error,是 Throwable 不是 Exception。
如何處理這些異常?
在現實編程中我們一般使用 try-with-resources 和 multiple catch來進行一些異常處理(便利的特性),在編譯時期,會自動生成相應的處理邏輯,比如,自動按照約定俗成 close 那些擴展了 AutoCloseable 或者 Closeable 的對象。
try-with-resources 是一種處理Closeable實現類關閉資源的一種寫法,簡單寫了一個例子可以發現其實這就是一中語法,這種語法可以自動編譯幫忙編譯最後關閉流的操作:
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader(“a”));
BufferedWriter writer = new BufferedWriter(new FileWriter(“a”))) {
// Try-with-resources
} catch (IOException e) {// Multiple catch
// Handle it
}
}
編譯後class
public static void main(String[] args) { try {
BufferedReader br = new BufferedReader(new FileReader(“a”));
Throwable var2 = null; try {
BufferedWriter writer = new BufferedWriter(new FileWriter(“a”));
Object var4 = null; if (writer != null) { if (var4 != null) { try {
writer.close();
} catch (Throwable var15) {
((Throwable)var4).addSuppressed(var15);
}
} else {
writer.close();
}
}
} catch (Throwable var16) {
var2 = var16; throw var16;
} finally { if (br != null) { if (var2 != null) { try {
br.close();
} catch (Throwable var14) {
var2.addSuppressed(var14);
}
} else {
br.close();
}
}
}
} catch (IOException var18) {
;
}
}
異常處理的兩個基本原則
盡量不要捕獲類似 Exception 這樣的通用異常,而是應該捕獲特定異常
這是因為在日常的開發和合作中,我們讀代碼的機會往往超過寫代碼,軟件工程是門協作的藝術,所以我們有義務讓自己的代碼能夠直觀地體現出盡量多的信息,而泛泛的 Exception 之類,恰恰隱藏了我們的目的。另外,我們也要保證程序不會捕獲到我們不希望捕獲的異常。比如,你可能更希望 RuntimeException 被擴散出來,而不是被捕獲。
不要生吞(swallow)異常。這是異常處理中要特別注意的事情,因為很可能會導致非常難以診斷的詭異情況。
如果我們不把異常拋出來,或者也沒有輸出到日誌(Logger)之類,程序可能在後續代碼以不可控的方式結束。沒人能夠輕易判斷究竟是哪裡拋出了異常,以及是什麼原因產生了異常。
在寫程序時可以通過Objects類(jdk提供),或者斷言等提前判斷問題,如空指針異常的一些值的處理Objects. requireNonNull(filename);而不是使用之後有問題再系統拋出異常,這可能就會不直觀的找到問題所在。即:Throw early, catch late 原則
希望對您有所幫助!~
在java中常出現的異常和解決方法?
1. java.lang.nullpointerexception\x0d\x0a 這個異常大家肯定都經常遇到,異常的解釋是”程序遇上了空指針”,簡單地說就是調用了未經初始化的對象或者是不存在的對象,這個錯誤經常出現在創建圖片,調用數組這些操作中,比如圖片未經初始化,或者圖片創建時的路徑錯誤等等。對數組操作中出現空指針,很多情況下是一些剛開始學習編程的朋友常犯的錯誤,即把數組的初始化和數組元素的初始化混淆起來了。數組的初始化是對數組分配需要的空間,而初始化後的數組,其中的元素並沒有實例化,依然是空的,所以還需要對每個元素都進行初始化(如果要調用的話)\x0d\x0a\x0d\x0a 2. java.lang.classnotfoundexception\x0d\x0a 這個異常是很多原本在jb等開發環境中開發的程序員,把jb下的程序包放在wtk下編譯經常出現的問題,異常的解釋是”指定的類不存在”,這裡主要考慮一下類的名稱和路徑是否正確即可,如果是在jb下做的程序包,一般都是默認加上package的,所以轉到wtk下後要注意把package的路徑加上。\x0d\x0a\x0d\x0a 3. java.lang.arithmeticexception\x0d\x0a 這個異常的解釋是”數學運算異常”,比如程序中出現了除以零這樣的運算就會出這樣的異常,對這種異常,大家就要好好檢查一下自己程序中涉及到數學運算的地方,公式是不是有不妥了。\x0d\x0a\x0d\x0a 4. java.lang.arrayindexoutofboundsexception\x0d\x0a 這個異常相信很多朋友也經常遇到過,異常的解釋是”數組下標越界”,現在程序中大多都有對數組的操作,因此在調用數組的時候一定要認真檢查,看自己調用的下標是不是超出了數組的範圍,一般來說,顯示(即直接用常數當下標)調用不太容易出這樣的錯,但隱式(即用變量表示下標)調用就經常出錯了,還有一種情況,是程序中定義的數組的長度是通過某些特定方法決定的,不是事先聲明的,這個時候,最好先查看一下數組的length,以免出現這個異常。\x0d\x0a\x0d\x0a 5. java.lang.illegalargumentexception\x0d\x0a 這個異常的解釋是”方法的參數錯誤”,很多j2me的類庫中的方法在一些情況下都會引發這樣的錯誤,比如音量調節方法中的音量參數如果寫成負數就會出現這個異常,再比如g.setcolor(int red,int green,int blue)這個方法中的三個值,如果有超過255的也會出現這個異常,因此一旦發現這個異常,我們要做的,就是趕緊去檢查一下方法調用中的參數傳遞是不是出現了錯誤。\x0d\x0a\x0d\x0a 6. java.lang.illegalaccessexception\x0d\x0a 這個異常的解釋是”沒有訪問權限”,當應用程序要調用一個類,但當前的方法即沒有對該類的訪問權限便會出現這個異常。對程序中用了package的情況下要注意這個異常。\x0d\x0a\x0d\x0a 其他還有很多異常,我就不一一列舉了,我要說明的是,一個合格的程序員,需要對程序中常見的問題有相當的了解和相應的解決辦法,否則僅僅停留在寫程序而不會改程序的話,會極大影響到自己的開發的。關於異常的全部說明,在api里都可以查閱。\x0d\x0a\x0d\x0a算術異常類:ArithmeticExecption\x0d\x0a\x0d\x0a空指針異常類:NullPointerException\x0d\x0a\x0d\x0a類型強制轉換異常:ClassCastException\x0d\x0a\x0d\x0a數組負下標異常:NegativeArrayException\x0d\x0a\x0d\x0a數組下標越界異常:ArrayIndexOutOfBoundsException\x0d\x0a\x0d\x0a違背安全原則異常:SecturityException\x0d\x0a\x0d\x0a文件已結束異常:EOFException\x0d\x0a\x0d\x0a文件未找到異常:FileNotFoundException\x0d\x0a\x0d\x0a字符串轉換為數字異常:NumberFormatException\x0d\x0a\x0d\x0a操作數據庫異常:SQLException\x0d\x0a\x0d\x0a輸入輸出異常:IOException\x0d\x0a\x0d\x0a方法未找到異常:NoSuchMethodException\x0d\x0a\x0d\x0ajava.lang.AbstractMethodError\x0d\x0a\x0d\x0a抽象方法錯誤。當應用試圖調用抽象方法時拋出。\x0d\x0a\x0d\x0ajava.lang.AssertionError\x0d\x0a\x0d\x0a斷言錯。用來指示一個斷言失敗的情況。\x0d\x0a\x0d\x0ajava.lang.ClassCircularityError\x0d\x0a\x0d\x0a類循環依賴錯誤。在初始化一個類時,若檢測到類之間循環依賴則拋出該異常。\x0d\x0a\x0d\x0ajava.lang.ClassFormatError\x0d\x0a\x0d\x0a類格式錯誤。當Java虛擬機試圖從一個文件中讀取Java類,而檢測到該文件的內容不符合類的有效格式時拋出。\x0d\x0a\x0d\x0ajava.lang.Error\x0d\x0a\x0d\x0a錯誤。是所有錯誤的基類,用於標識嚴重的程序運行問題。這些問題通常描述一些不應被應用程序捕獲的反常情況。\x0d\x0a\x0d\x0ajava.lang.ExceptionInInitializerError\x0d\x0a\x0d\x0a初始化程序錯誤。當執行一個類的靜態初始化程序的過程中,發生了異常時拋出。靜態初始化程序是指直接包含於類中的static語句段。\x0d\x0a\x0d\x0ajava.lang.IllegalAccessError\x0d\x0a\x0d\x0a違法訪問錯誤。當一個應用試圖訪問、修改某個類的域(Field)或者調用其方法,但是又違反域或方法的可見性聲明,則拋出該異常。\x0d\x0a\x0d\x0ajava.lang.IncompatibleClassChangeError\x0d\x0a\x0d\x0a不兼容的類變化錯誤。當正在執行的方法所依賴的類定義發生了不兼容的改變時,拋出該異常。一般在修改了應用中的某些類的聲明定義而沒有對整個應用重新編譯而直接運行的情況下,容易引發該錯誤。\x0d\x0a\x0d\x0ajava.lang.InstantiationError\x0d\x0a\x0d\x0a實例化錯誤。當一個應用試圖通過Java的new操作符構造一個抽象類或者接口時拋出該異常.\x0d\x0a\x0d\x0ajava.lang.InternalError\x0d\x0a\x0d\x0a內部錯誤。用於指示Java虛擬機發生了內部錯誤。\x0d\x0a\x0d\x0ajava.lang.LinkageError\x0d\x0a\x0d\x0a鏈接錯誤。該錯誤及其所有子類指示某個類依賴於另外一些類,在該類編譯之後,被依賴的類改變了其類定義而沒有重新編譯所有的類,進而引發錯誤的情況。\x0d\x0a\x0d\x0ajava.lang.NoClassDefFoundError\x0d\x0a\x0d\x0a未找到類定義錯誤。當Java虛擬機或者類裝載器試圖實例化某個類,而找不到該類的定義時拋出該錯誤。\x0d\x0a\x0d\x0ajava.lang.NoSuchFieldError\x0d\x0a\x0d\x0a域不存在錯誤。當應用試圖訪問或者修改某類的某個域,而該類的定義中沒有該域的定義時拋出該錯誤。\x0d\x0a\x0d\x0ajava.lang.NoSuchMethodError\x0d\x0a\x0d\x0a方法不存在錯誤。當應用試圖調用某類的某個方法,而該類的定義中沒有該方法的定義時拋出該錯誤。\x0d\x0a\x0d\x0ajava.lang.OutOfMemoryError\x0d\x0a\x0d\x0a內存不足錯誤。當可用內存不足以讓Java虛擬機分配給一個對象時拋出該錯誤。\x0d\x0a\x0d\x0ajava.lang.StackOverflowError\x0d\x0a\x0d\x0a堆棧溢出錯誤。當一個應用遞歸調用的層次太深而導致堆棧溢出時拋出該錯誤。\x0d\x0a\x0d\x0ajava.lang.ThreadDeath\x0d\x0a\x0d\x0a線程結束。當調用Thread類的stop方法時拋出該錯誤,用於指示線程結束。\x0d\x0a\x0d\x0ajava.lang.UnknownError\x0d\x0a\x0d\x0a未知錯誤。用於指示Java虛擬機發生了未知嚴重錯誤的情況。\x0d\x0a\x0d\x0ajava.lang.UnsatisfiedLinkError\x0d\x0a\x0d\x0a未滿足的鏈接錯誤。當Java虛擬機未找到某個類的聲明為native方法的本機語言定義時拋出。\x0d\x0a\x0d\x0ajava.lang.UnsupportedClassVersionError\x0d\x0a\x0d\x0a不支持的類版本錯誤。當Java虛擬機試圖從讀取某個類文件,但是發現該文件的主、次版本號不被當前Java虛擬機支持的時候,拋出該錯誤。\x0d\x0a\x0d\x0ajava.lang.VerifyError\x0d\x0a\x0d\x0a驗證錯誤。當驗證器檢測到某個類文件中存在內部不兼容或者安全問題時拋出該錯誤。\x0d\x0a\x0d\x0ajava.lang.VirtualMachineError\x0d\x0a\x0d\x0a虛擬機錯誤。用於指示虛擬機被破壞或者繼續執行操作所需的資源不足的情況。\x0d\x0a\x0d\x0ajava.lang.ArithmeticException\x0d\x0a\x0d\x0a算術條件異常。譬如:整數除零等。\x0d\x0a\x0d\x0ajava.lang.ArrayIndexOutOfBoundsException\x0d\x0a\x0d\x0a數組索引越界異常。當對數組的索引值為負數或大於等於數組大小時拋出。\x0d\x0a\x0d\x0ajava.lang.ArrayStoreException\x0d\x0a\x0d\x0a數組存儲異常。當向數組中存放非數組聲明類型對象時拋出。\x0d\x0a\x0d\x0ajava.lang.ClassCastException\x0d\x0a\x0d\x0a類造型異常。假設有類A和B(A不是B的父類或子類),O是A的實例,那麼當強制將O構造為類B的實例時拋出該異常。該異常經常被稱為強制類型轉換異常。\x0d\x0a\x0d\x0ajava.lang.ClassNotFoundException\x0d\x0a\x0d\x0a找不到類異常。當應用試圖根據字符串形式的類名構造類,而在遍歷CLASSPAH之後找不到對應名稱的class文件時,拋出該異常。\x0d\x0a\x0d\x0ajava.lang.CloneNotSupportedException\x0d\x0a\x0d\x0a不支持克隆異常。當沒有實現Cloneable接口或者不支持克隆方法時,調用其clone()方法則拋出該異常。\x0d\x0a\x0d\x0ajava.lang.EnumConstantNotPresentException\x0d\x0a\x0d\x0a枚舉常量不存在異常。當應用試圖通過名稱和枚舉類型訪問一個枚舉對象,但該枚舉對象並不包含常量時,拋出該異常。\x0d\x0a\x0d\x0ajava.lang.Exception\x0d\x0a\x0d\x0a根異常。用以描述應用程序希望捕獲的情況。\x0d\x0a\x0d\x0ajava.lang.IllegalAccessException\x0d\x0a\x0d\x0a違法的訪問異常。當應用試圖通過反射方式創建某個類的實例、訪問該類屬性、調用該類方法,而當時又無法訪問類的、屬性的、方法的或構造方法的定義時拋出該異常。\x0d\x0a\x0d\x0ajava.lang.IllegalMonitorStateException\x0d\x0a\x0d\x0a違法的監控狀態異常。當某個線程試圖等待一個自己並不擁有的對象(O)的監控器或者通知其他線程等待該對象(O)的監控器時,拋出該異常。\x0d\x0a\x0d\x0ajava.lang.IllegalStateException\x0d\x0a\x0d\x0a違法的狀態異常。當在Java環境和應用尚未處於某個方法的合法調用狀態,而調用了該方法時,拋出該異常。\x0d\x0a\x0d\x0ajava.lang.IllegalThreadStateException\x0d\x0a\x0d\x0a違法的線程狀態異常。當縣城尚未處於某個方法的合法調用狀態,而調用了該方法時,拋出異常。\x0d\x0a\x0d\x0ajava.lang.IndexOutOfBoundsException\x0d\x0a\x0d\x0a索引越界異常。當訪問某個序列的索引值小於0或大於等於序列大小時,拋出該異常。\x0d\x0a\x0d\x0ajava.lang.InstantiationException\x0d\x0a\x0d\x0a實例化異常。當試圖通過newInstance()方法創建某個類的實例,而該類是一個抽象類或接口時,拋出該異常。\x0d\x0a\x0d\x0ajava.lang.InterruptedException\x0d\x0a\x0d\x0a被中止異常。當某個線程處於長時間的等待、休眠或其他暫停狀態,而此時其他的線程通過Thread的interrupt方法終止該線程時拋出該異常。\x0d\x0a\x0d\x0ajava.lang.NegativeArraySizeException\x0d\x0a\x0d\x0a數組大小為負值異常。當使用負數大小值創建數組時拋出該異常。\x0d\x0a\x0d\x0ajava.lang.NoSuchFieldException\x0d\x0a\x0d\x0a屬性不存在異常。當訪問某個類的不存在的屬性時拋出該異常。\x0d\x0a\x0d\x0ajava.lang.NoSuchMethodException\x0d\x0a\x0d\x0a方法不存在異常。當訪問某個類的不存在的方法時拋出該異常。\x0d\x0a\x0d\x0ajava.lang.NullPointerException\x0d\x0a\x0d\x0a空指針異常。當應用試圖在要求使用對象的地方使用了null時,拋出該異常。譬如:調用null對象的實例方法、訪問null對象的屬性、計算null對象的長度、使用throw語句拋出null等等。\x0d\x0a\x0d\x0ajava.lang.NumberFormatException\x0d\x0a\x0d\x0a數字格式異常。當試圖將一個String轉換為指定的數字類型,而該字符串確不滿足數字類型要求的格式時,拋出該異常。\x0d\x0a\x0d\x0ajava.lang.RuntimeException\x0d\x0a\x0d\x0a運行時異常。是所有Java虛擬機正常操作期間可以被拋出的異常的父類。\x0d\x0a\x0d\x0ajava.lang.SecurityException\x0d\x0a\x0d\x0a安全異常。由安全管理器拋出,用於指示違反安全情況的異常。\x0d\x0a\x0d\x0ajava.lang.StringIndexOutOfBoundsException\x0d\x0a\x0d\x0a字符串索引越界異常。當使用索引值訪問某個字符串中的字符,而該索引值小於0或大於等於序列大小時,拋出該異常。\x0d\x0a\x0d\x0ajava.lang.TypeNotPresentException\x0d\x0a\x0d\x0a類型不存在異常。當應用試圖
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/304163.html