當前位置:首頁 » 編程語言 » java中異常處理

java中異常處理

發布時間: 2022-09-23 14:17:52

java語言中,異常處理有哪幾種方式

有兩中方式:1.捕獲異常,自己處理.
2.throw出去,讓別人處理.
舉個例子:
public class A{
try{
可能放生異常的語句...

}catch(Exception e){
e.getMessage();//自己處理
}

}

public class A throws Exception{

可能放生異常的語句...

}//throw出去,讓別人處理
注意這里用的是throws
如果在方法裡面則用throw
舉例:
public class A{
try{
可能放生異常的語句...

}catch(Exception e){
e.getMessage();//自己處理
throw new Exception ("");
}

}

Ⅱ java中異常的基本控制語句是什麼,其作用是什麼

Java中的控制語句中異常處理語句:try-catch-finally,throw。
異常作用:在Java中,在默認情況下,異常會輸出一個錯誤信息,然後中止程序的執行。為了更好地處理異常情況,程序開發人員通常會在程序中定義異常處理代碼塊來捕獲和處理異常。這樣,當異常情況發生時,一個代表該異常的對象會被創建,並在產生異常的方法中被引發。該方法可以選擇自己處理異常,也可以拋出該異常。

Ⅲ Java中異常處理語句有哪些

JAVA使用try-catch語句來處理異常。

將有可能出現的異常操作放在try-catch的try部分,一旦try部分拋出異常對象,或調用某個可能拋出異常對象的方法,並且該方法拋出了異常對象,那麼try立即結束執行,轉向catch部分。所以程序將發生異常後的處理放在catah部分。

Ⅳ Java異常處理常見方式有什麼

有兩種,一種是向上拋,另一種是處理它
throws,用在定義方法上,後面加拋出的異常,例如
public static void main() throws Exception{}
另一種就是捕獲並解決它,try...catch(finally)
定義在方法體中,例如
try{可能拋異常的語句....}catch(捕獲的異常){如果拋出了異常干什麼}
catch可以多寫

Ⅳ 北大青鳥分享異常處理的Java最佳方法

異常處理是Java開發中的一個重要部分。它是關乎每個應用的一個非功能性需求,是為了處理任何錯誤狀況,比如資源不可訪問,非法輸入,空輸入等等。Java提供了幾個異常處理特性,以try,catch和finally關鍵字的形式內建於語言自身之中。Java編程語言也允許你創建新的異常,並通過使用throw和throws關鍵字拋出它們。事實上,在Java編程中,Java的異常處理不單單是知道語法這么簡單,它必須遵循標準的JDK庫,和幾個處理錯誤和異常的開源代碼。這里北大青鳥http://www.kmbdqn.com/將討論一些關於異常處理的Java最佳實踐。


1、為可恢復的錯誤使用檢查型異常,為編程錯誤使用非檢查型錯誤。


選擇檢查型還是非檢查型異常,對於Java編程人員來說,總是讓人感到困惑。檢查型異常保證你對錯誤條件提供異常處理代碼,這是一種從語言到強制你編寫健壯的代碼的一種方式,但同時會引入大量雜亂的代碼並導致其不可讀。當然,如果你有替代品和恢復策略的話,捕捉異常並做些什麼看起來似乎也在理。在Java編程中選擇檢查型異常還是運行時異常。


2、在finally程序塊中關閉或者釋放資源


這在Java編程中,是一個廣為人知的最佳實踐,在處理網路和IO類的時候,相當於一個標准。在finally塊中關閉資源,在正常和異常執行的情況下,保證之前和稀缺資源的合理釋放,這由finally塊保證。從Java7開始,該語言有了一項更有趣的功能:資源管理自動化或者ARM塊能實現這一功能。盡管如此,我們仍然要記住在finally塊中關閉資源,這是對於釋放像FileDescriptors這類,應用在socket和文件編程的情況下的有限資源很重要的。


3、在堆棧跟蹤中包含引起異常的原因


很多時候,當一個由另一個異常導致的異常被拋出的時候,Java庫和開放源代碼會將一種異常包裝成另一種異常。日誌記錄和列印根異常就變得非常重要。Java異常類提供了getCause方法來檢索導致異常的原因,這些(原因)可以對異常的根層次的原因提供更多的信息。該Java實踐對在進行調試或排除故障大有幫助。時刻記住,如果你將一個異常包裝成另一種異常時,構造一個新異常要傳遞源異常。


4、始終提供關於異常的有意義的完整的信息


異常信息是最重要的地方,因為這是程序員首先看到的第一個地方,這里你能找到問題產生的根本原因。這里始終提供精確的真實的信息。


5、避免過度使用檢查型異常


檢查型異常在強制執行方面有一定的優勢,但同時它也破壞了代碼,通過掩蓋業務邏輯使代碼可讀性降低。只要你不過度使用檢查型異常,你可以最大限度的減少這類情況,這樣做的結果是你會得到更清潔的代碼。你同樣可以使用Java7的新功能,以移除重復項。


6、將檢查型異常轉為運行時異常


這是在像Spring之類的多數框架中用來限制使用檢查型異常的技術之一,大部分出自於JDBC的檢查型異常,都被包裝進DataAccessException中,而(DataAccessException)異常是一種非檢查型異常。這是Java最佳實踐帶來的好處,特定的異常限制到特定的模塊,像SQLException放到DAO層,將意思明確的運行時異常拋到客戶層。


7、記住對性能而言,異常代價高昂


需要記住的一件事是異常代價高昂,同時讓你的代碼運行緩慢。假如你有方法從ResultSet(結果集)中進行讀取,這時常會拋出SQLException異常而不會移到下一元素,這將會比不拋出異常的正常代碼執行的慢的多。因此最大限度的減少不必要的異常捕捉和移動,那裡沒有什麼固定的原因。不要僅僅是拋出和捕捉異常,如果你能使用boolean變數去表示執行結果,可能會得到更整潔,更高性能的解決方案。修正錯誤的根源,避免不必須要的異常捕捉。


Ⅵ java中異常是用來處理程序出現錯誤的情況,那為什麼不直接用if語句,把可能出現的錯誤放在if中呢

java中異常是用來處理程序出現錯誤的情況,不直接用if語句,把可能出現的錯誤放在if中的原因:因為有些錯誤是人們不能預料的,比如內存溢出等,所以還是需要try/catch一下。

(1)在Java程序運行過程中系統得到一個異常對象是,它將會沿著方法的調用棧逐層回溯,尋找處理這一異常的代碼。

(2)找到能夠處理這種類型異常的方法後,運行時系統把當前異常交給這個方法處理;如果找不到可以捕獲異常的方法,則運行時系統將終止,相應的Java程序也將退出。

概述

異常處理,是編程語言或計算機硬體里的一種機制,用於處理軟體或信息系統中出現的異常狀況(即超出程序正常執行流程的某些特殊條件)。

各種編程語言在處理異常方面具有非常顯著的不同點(錯誤檢測與異常處理區別在於:錯誤檢測是在正常的程序流中,處理不可預見問題的代碼,例如一個調用操作未能成功結束)。某些編程語言有這樣的函數:當輸入存在非法數據時不能被安全地調用,或者返回值不能與異常進行有效的區別。

Ⅶ java異常處理存在的意義是什麼

對於代碼執行過程中,產生的異常。如果不捕獲處理,程序代碼默認會拋給調用層,如果調用層也未對異常做處理,那麼這個異常會一直往外拋出去,有可能直接將這些信息展現給使用的用戶。使用的用戶看到這些信息根本無法理解出現了什麼錯誤,很有可能會誤以為系統崩潰。
在代碼中做異常處理,可以保證程序運行時,如果產生異常,可以將底層的異常信息捕獲到,轉換為用戶可以接受,或者能看懂的信息,比如說:當前處理有錯誤。等等這類用戶可以理解的信息,而不是程序開發的代碼底層信息。這樣使用的用戶可以根據提示重新操作。
Java代碼中,有些類型轉換、資料庫連接、文件讀取等等操作,異常發生時,不會導致系統崩潰,但有必要讓操作用戶按照正常流程來操作,通過異常處理來反饋給操作用戶。
以上,就是我自己在Java開發過程中,自己的理解和總結,如果有誤,還望多多諒解,多多包含。

Ⅷ 詳細描述java是如何處理異常的

當出現程序無法控制的外部環境問題(用戶提供的文件不存在,文件內容損壞,網路不可用...)時,JAVA就會用異常對象來描述。
JAVA中用2種方法處理異常:
1.在發生異常的地方直接處理;
2.將異常拋給調用者,讓調用者處理。
JAVA異常可分為3種:
(1)檢查性異常:java.lang.Exception
(2)運行期異常:java.lang.RuntimeException
(3)錯誤:java.lang.Error
頂層是java.lang.Throwable類,檢查性異常,運行期異常,錯誤都是這個類的子孫類。
java.lang.Exception和java.lang.Error繼承自java.lang.Throwable,而java.lang.RuntimeException繼承自java.lang.Exception.
檢查性異常------程序正確,但因為外在的環境條件不滿足引發。例如:用戶錯誤及I/O問題----程序試圖打開一個並不存在的遠程Socket埠。這不是程序本身的邏輯錯誤,而很可能是遠程機器名字錯誤(用戶拼寫錯誤)。對商用軟體系統,程序開發者必須考慮並處理這個問題。JAVA編譯器強制要求處理這類異常,如果不捕獲這類異常,程序將不能被編譯。
運行期異常------這意味著程序存在bug,如數組越界,0被除,入參不滿足規范.....這類異常需要更改程序來避免,JAVA編譯器強制要求處理這類異常。
錯誤------一般很少見,也很難通過程序解決。它可能源於程序的bug,但一般更可能源於環境問題,如內存耗盡。錯誤在程序中無須處理,而有運行環境處理。
如何處理異常?
1.try...catch
程序運行產生異常時,將從異常發生點中斷程序並向外拋出異常信息。
Java代碼
int x = (int)(Math.random()*5);
int y = (int)(Math.random()*10);
int[] z =new int[5];
try
{
System.out.println("y/x="+(y/x));
System.out.println("y="+y+"z[y]="+z[y]);
}
catch (ArithmeticException exc1)
{
System.out.println("算術運算異常:"+exc1.getMessage());
}
catch ( exc2)
{
System.out.println("數據越界異常:"+exc2.getMessage());
}
說明:ArithmeticException和都屬運行期異常:java.lang.RuntimeException,如果不用try...catch捕獲,程序也是可通過編譯的,但如果屬於檢查性異常:java.lang.Exception,必須而且一定要用try...catch...對其進行處理。
2.finally
如果把finally塊置try...catch...語句後,finally塊一般都會得到執行,它相當於一個萬能的保險,即使前面的try塊發生異常,而又沒有對應異常的catch塊,finally塊將馬上執行。
以下情形,finally塊將不會被執行:
(1)finally塊中發生了異常;
(2)程序所在線程死亡;
(3)在前面的代碼中用了System.exit();
(4)關閉CPU。
3.多個異常的處理規則:
定義多個catch可精確地定位異常。如果為子類的異常定義了特殊的catch塊,而父類的異常則放在另外一個catch塊中,此時,必須滿足以下規則:子類異常的處理塊必須在父類異常處理塊的前面,否則會發生編譯錯誤。所以,越特殊的異常越在前面處理,越普遍的異常越在後面處理。這類似於制訂防火牆的規則次序:較特殊的規則在前,較普通的規則在後。
自己也可以定義並拋出異常,方法是2步:創建異常,拋出異常(首先實例化一個異常對象,然後用thow拋出)合在一起就是----
thow new IOException("異常說明信息")。將創建異常,拋出異常合在一起的好處是:創建異常時,會包含異常創建處的行信息,異常被捕獲時可以通過堆棧跡(stack Trace)的形式報告這些信息。如果在同一行代碼創建和拋出異常,對於程序的調試將非常有用。
所以,thow new XXX()已經成為一個標準的異常拋出範式。
在定義一個方法時,方法塊中調用的方法可能會拋出異常,可用上面的thow new XXX()處理,如果不處理,那麼必須在方法定義時,用thows聲明這個方法會拋出的異常。
對異常的處理,有一條行之有效的默認規則:向上拋出-----被調用類在運行過程中對遇到的異常一概不作處理,而是直接向上拋出,一直到最上層的調用類,調用類根據應用系統的需求和特定的異常處理規則進行處理,如向控制台輸出異常堆棧信息,列印在日誌文件中。用一句形象的話來說,就是誰使用,誰(最上層的調用類)處理。

Ⅸ Java異常處理try-catch-finally的執行過程

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
public static void main(String[] args) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(new Date()));
} catch (Exception e) {
System.out.println("Error!!");
e.printStackTrace();
} finally {
System.out.println("Date Transform End.");
}
}
}
①首先執行try中的代碼。
②如果try中的代碼執行過程中發生異常,會立即轉入catch中,執行catch中的代碼。
③如果try中執行完畢,未發生異常,則不執行catch中的代碼。
④最後執行finally中的代碼。無論異常是否發後生。

Ⅹ Java中的異常機制有什麼作用

你可以根據出現的異常來進行某些操作,比如一個線程,你不能使用TThread.currentThread().stop();方法停止線程,而你後面可能會有其它操作,如果讓它等到程序運行完畢才停止,那麼這么做就太浪費內存了,這時候你就可以使用Thread.sleep()方法讓線程先中斷,然後使用Thread.currentThread().interrupt();方法讓線程拋出異常,這樣就能達到讓線程停止的操作了,然後你就可以在catch語句塊中執行你後面的操作

熱點內容
phpjava架構 發布:2025-01-10 10:56:06 瀏覽:380
python二維排序 發布:2025-01-10 10:56:00 瀏覽:604
南水北調怎麼配置 發布:2025-01-10 10:55:27 瀏覽:118
廣數980系統參數密碼是多少 發布:2025-01-10 10:55:25 瀏覽:574
androidhtml字體 發布:2025-01-10 10:55:01 瀏覽:784
資料庫連接工廠模式 發布:2025-01-10 10:51:00 瀏覽:485
mac文件夾路徑設置 發布:2025-01-10 10:48:12 瀏覽:802
shell腳本自動密碼 發布:2025-01-10 10:46:29 瀏覽:766
安卓手機怎麼切兩個屏 發布:2025-01-10 10:33:51 瀏覽:684
python上傳圖片 發布:2025-01-10 10:30:54 瀏覽:206