1. java中錯誤(error)和異常(exception)有什麼主要區別
Error(錯誤)表示系統級的錯誤和程序不必處理的異常,一般是指與虛擬機相關的問題,是java運行環境中的內部悔碼猛錯誤或者硬體問題。比如:內存資源不足等。對於這種錯誤,程序基本無能為力,除了退出運行外別無選擇,它是由Java虛擬碧橋機拋出的。x0dx0ax0dx0aException(違例)表示需要捕捉或者需要程序進行處理的異常,它處理的是因為程模物序設計的瑕疵而引起的問題或者在外的輸入等引起的一般性問題,是程序必須處理的。x0dx0aException又分為運行時異常,受檢查異常。x0dx0a運行時異常,表示無法讓程序恢復的異常,導致的原因通常是因為執行了錯誤的操作,建議終止程序,因此,編譯器不檢查這些異常。x0dx0a受檢查異常,是表示程序可以處理的異常,也即表示程序可以修復(由程序自己接受異常並且做出處理),所以稱之為受檢查異常。
2. java中error和exception的區別
error屬於編譯時錯誤,根本不會編譯通過,也就是不會生成.class文件,exception屬於運行時錯誤,只有在調用的時候才會亂渣如報梁橋錯,比如嘩啟空指針或數組下標越界等等。
3. Java編程中常見的錯誤有哪些
錯誤就是error,它不同於異常。有時候程序不發生異常是不會出問題的,但有錯游拆誤一定有問題。
常見的錯誤:編寫錯誤,語句錯誤---這兩個編譯器會提醒,也就是常用的eclipse;
邏輯錯誤,這個要看螞跡你自己的邏輯思維了。
潛在錯誤,也就是編寫語句邏輯都沒有問題,但jvm檢測有問題,就需要你自己找了,通常潛在錯誤都有邏輯問題悶磨並。
4. java中error與exception的區別是什麼
一、含義不同:
Error類一般是與虛擬機相關的問題,如系統崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢等。對於這類錯誤的導致的應用程序中斷,僅靠程序本身無法恢復和和預防,遇到這樣的錯誤,建議讓程序終止。
Exception類表示程序可以處理的異常,可以捕獲且可能恢復。遇到這類異常,應該盡可能處理異常,使程序恢復運行,而不應該隨意終止異常。
二、用途不同:
Exception和Error體現了Java平台設計者對不同異常情況的分類。Exception是程序正常運行中,可以預料的意外情況,可能並且應該被捕獲,進行相應處理。
Error是指在正常情況下,不大可能出現的情況,絕大部分的Error都會導致程序處於非正常的、不可恢復狀態。既然是非正常情況,所以不便於也不需要捕獲,常見的比如OutOfMemoryError之類,都是Error的子類。
好處
讓異常處理與業務邏輯的主線分離,我們可以對可以遇見的異常作分支處理,其實將業務邏輯與異常處理分離也是Exception設計的主旨,其次Java Exception 不需要像C語言那樣在程序的多個地方去檢測同一個錯誤,並就地作異常的處理,相比老式的錯誤處理,現行的錯誤處理的結構則來的更加清晰。
以上內容參考:網路-Exception
5. 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 原則
希望對您有所幫助!~
6. 為什麼java運行時候出現這個error
這個是Java運行環境和編譯級別不兼容導致的
建議在cmd先通敗氏過"java -version" 指令查看Java運行環境版本, 之後再通過"javac -version" 指令查看Java的編譯版本, 結果參考下圖
如果版本不一致,說明電腦中存在多個Java環境, 建議修改環境變數,將多餘的Java變數配橘禪置去掉, 一般圓枯塵是path變數
7. Java的Error和Exception用法
Error(錯誤)表示系統級的錯誤和程序不必處理的異常,是java運行環境中的內部錯誤或者硬體問題,比如,內存資源不足、操作系統出錯,宏鋒對於這種錯誤,程序基本無能為力,除了退出運行外別無其它的選擇。
Exception(違例)表示需要捕捉或者需要程序進行處理的異常,它處理的是因為程序設計的瑕疵而引起的問題或者在外的輸入等引起的一般性問題,是程序必宴尺須處理的。
程序中
try{
}catch(){
}finally{
}
為處理異常的常見方法。try中的代碼出現了異常則由catch中的Exception e捕獲,當發現Exception e中無法處理這個異常或錯誤後則判斷是否有finally,如果發現有則運行finally中的代碼並退出程序。
程序中:
throw new Error();是強制拋出一個錯誤,程序當然處理不了,所以只運晌絕高行了finally中的代碼並退出程序。
如果將程序的方badMethod();法改為int x = 19/0;
public static void main(String args[]) {
try {
//badMethod();
int x = 19/0;
System.out.println("A");
} catch (Exception e) {
System.out.println("C");
} finally {
System.out.println("B");
}
System.out.println("D");
}
你會發現程序運行後會是:
C
B
D
8. java中error和exception分別有幾種
常見的error有:
ArithmeticException(除數為0的異常), BufferOverflowException(緩沖區上溢異常), BufferUnderflowException(緩沖區下溢異常), IndexOutOfBoundsException(出界異常), NullPointerException(空指針異常), EmptyStackException(空棧異常), IllegalArgumentException(不合法的參數異常), NegativeArraySizeException, NoSuchElementException, SecurityException, SystemException, UndeclaredThrowableException
常見的exception有:
1. java.lang.NullPointerException
異常的解釋是"程序遇上了空指針",簡單地說就是調用了未經初始化的對象或者是不存在的對象,即把數組的初始化和數組元素的初始化混淆起來了。數組的初始化是對數組分配需要的空間,而初始化後的數組,其中的元素並沒有實例化,依然是空的,所以還需要對每個元素都進行初始化(如果要調用的話)
2. java.lang.ClassNotFoundException異常的解釋是"指定的類不存在"。
3. java.lang.ArithmeticException這個異常的解釋是"數學運算異常",比如程序中出現了除以零這樣的運算就會出這樣的異常。
4. java.lang.
異常的解釋是"數組下標越界",現在程序中大多都有對數組的操作,因此在調用數組的時候一定要認真檢查,看自己調用的下標是不是超出了數組的范圍,一般來說,顯示(即直接用常數當下標)調用不太容易出這樣的錯,但隱式(即用變數表示下標)調用就經常出錯了,還有一種情況,是程序中定義的數組的長度是通過某些特定方法決定的,不是事先聲明的,這個時候,最好先查看一下數組的length,以免出現這個異常。
5. java.lang.IllegalArgumentException
這個異常的解釋是"方法的參數錯誤",比如g.setColor(int red,int green,int blue)這個方法中的三個值,如果有超過255的也會出現這個異常,因此一旦發現這個異常,我們要做的,就是趕緊去檢查一下方法調用中的參數傳遞是不是出現了錯誤。
6. java.lang.IllegalAccessException
這個異常的解釋是"沒有訪問許可權",當應用程序要調用一個類,但當前的方法即沒有對該類的訪問許可權便會出現這個異常。對程序中用了Package的情況下要注意這個異常
9. Java編程中常見的錯誤有哪些
相信作為程序員的我們在對程序進行編譯過程中經常會遇到錯誤,或者在運行過程中出現錯誤,在這里主要跟大家談談經常遇到的一些異常與錯誤,以及解決辦法。
異常是指程序在編譯或運行過程出現的錯誤。
在java.lang包中Throwable包含了所有的異常。
Error (錯誤) 和Exception(異常)
(1)Error(錯誤)
一旦發生無法修復,但可以避免發生。
常見錯誤類:
IOError:I/O錯誤,當發生嚴重的I/O錯誤時,拋出此錯誤。
VirtualMachineError:虛擬機錯誤,當 Java 虛擬機崩潰或用盡了它繼續操作所需的資源時,拋出該錯誤。
StackOverflowError:棧內存滿了,當應用程序遞歸太深而發生堆棧溢出時,拋出該錯誤。
OutofMemoryError:堆內存滿了,因為內存溢出或沒有可用的內存提供給垃圾回收器時,Java 虛擬機無法分配一個對象,這時拋出該異常。
以上是一些常見的錯誤,在Error類中還有一些別的錯誤(參照文件Java.lang.Throwable.Error).
(2)Exception(異常)
一旦發生,可以捕獲並處理,不會導致程序終止,有時可以避免有時無法避免。
異常的分類:
1.編譯時異常(需要強制處理) 2.運行時異常(不需要強制處理)
常見的異常有:
IOException:輸入輸出流異常
FileNotFoundException:文件找不到的異常
ClassNotFoundException:類找不到的異常
DataFormatException:數據格式化異常
NoSuchFieldException:沒有匹配的屬性異常
NoSuchMethodException:沒有匹配的方法異常
SQLException:資料庫操作異常
TimeoutException:執行超時異常
常見的運行時異常:
RuntimeException:運行時異常
NullPointerException:空指針異常
:數組越界異
ClassCastException:類型轉換異常
IllegalArgumentException:非法的參數異常
InputMismatchException:輸入不匹配
以上是常見的一些異常,另外還有別的異常,參見文件:Java.lang.Throwable.Exception
既然我們常常會遇到一些異常,那我們如何來處理這些異常就是一個急需解決的事情。
(1) 如何處理編譯時異常?
方法一:將需要處理的代碼塊放在一個try...catch...中
try{
//需要處理異常的代碼
}catch(XXXException ef){
ef.printStackTrace();
}
我們方法一就是要將我們不確定的代碼放入try......catch中,先進行try一下,如果沒有異常,則不會觸發catch,沒有輸出,一旦出現異常,那麼catch就會工作,在catch中捕獲異常信息,根據異常信息進行補救措施。
如以下代碼:
從結果可以看出,我們在輸入數據的時候出現錯誤,這樣通過自定義異常能夠讓我們更直接快速的找到運行或編譯時的異常。
在上述中我們分別提到了三種throw,分別是Throwable,Throws以及throw,那麼到底三者有什麼區別?
Throwable:是指在在Java.lang包中的一個類,其包含了所有的異常和錯誤,其中類Error和Exception 是它
的子類。
Thows:是指在解決編譯時異常,將方法中異常拋給上一級,在方法後面要加Throw Exception來進行拋。
throw:是指在自定義異常時,如果方法出現異常,那麼將作為引用方法的對象拋出。即拋出異常。
10. 請問java里的error和exception是什麼啊
都是Object下的兩個子類。
一個是錯誤(error)類,一般是昌慶java虛擬機出錯等情況。這種類在編寫程納肆序時是沒有辦法處理的。
一個是異常類(exception),這種類是可以進行處洞迅轎理的。比如說用try、catch、finally語句。
常見的異常類有空指針異常、輸入數據不匹配異常、IO異常等等....