計算機, 程序設計
Java的:異常及其處理
任何程序將穩定地操作僅當源代碼調試,和沒有條件,可能會導致無法預料的情況。 抓住可能出現的故障的過程的編程階段進行。 要做到這一點,開發商考慮到所有的預期成果,並試圖限制誤差的影響,使其無法與程序的正常工作,或導致其崩潰。
當您可能需要異常處理
在Java中,異常可以通過不正確的用戶輸入引起的,沒有必要的資源或突然網絡斷開程序。 對於應用程序開發人員創建舒適的使用,你必須控制的緊急情況的發生。 消費者不應該等待退出應用程序,丟失數據作為未處理的異常,或只是一個消息的一部分出現,說明發生了錯誤的結果。
處理Java異常
什麼考慮? Java語言有它自己的內置的異常處理功能。 當然,誤差很大比例是由另一編譯階段抓住了,系統會自動通知使用它不再是可能的。 但這種例外的是在運行時發生。 開發人員應該能夠預見到它,並設計代碼,以便它並不會導致錯誤,並處理它以特殊的方式,並移交控制另一個分支。
在Java中,這是由編譯器施加捕捉異常,所以典型的問題是已知的,有一個標準的訓練模式。
典型的排除
最簡單的例子,在其中您可以得到一個異常 - 這個師。 儘管它的簡單起見,在術語,作為除法器,可以是零,這將導致一個錯誤。 那麼,如果它是可以預測過去的產生和防止。 但是,此選項並不總是可用的,所以捕捉異常應直接在出現的“被零除”組織。
Java的機制,使攔截處理錯誤看起來是這樣的:
- 堆異常對象被創建,以及任何其他;
- 該方案的自然過程被中斷;
- 排除機構正在試圖尋找另一種方式繼續進行代碼;
- 在處理器方面,工作找到該程序的安全執行或恢復,或將出現實現異常的一種特殊的方式。
創建一個錯誤可能是這樣的最簡單的例子:
如果(A == NULL)
拋出新的NullPointerException();
在這裡,變量初始化時檢查,即 是不是否參照空對象。 如果這種情況出現,需要特殊處理,異常是由拋出新拋出的NullPointerException()。
有關關鍵字的幾個細節
當處理異常,常常需要使用關鍵字Java來指代特定的操作。 其五規劃的這種語言:
- 嘗試。 這個關鍵字 已經滿足,它意味著一種過渡而進入一段代碼,可以拋出異常。 塊有限括號{}。
- 漁獲物。 它截取所需異常類型和適當地處理它。
- 最後。 該關鍵字是可選的,用於執行特定的代碼段,這是無論如何都需要,即使沒有異常沒有被捕獲。 直接try塊後添加。
- 扔 - 讓您隨時隨地創建Java異常。
- 拋出 - 被放置在所述方法中的簽名關鍵字。 這意味著下面的代碼可以拋出這種類型的Java異常。 該標誌作為一個信號,需要在必須銘記開發商 - 如預期的他的方法是行不通的。
與一試捕
發布到Java異常,自然假定它會以特殊的方式來處理。 最方便的方式做到這一點,如果代碼段是在塊圍起來。 其中可能包含一個例外。 當你運行該代碼時,虛擬機將發現一個意想不到的情況,明白,有一個關鍵的塊,並把控制與處理站。
Java代碼被包裹在一個特殊的塊的嘗試,在其內可以是一個例外。 因此,他把將在同一個地方,不raspolzayas代碼被抓到了好幾個意外情況。
最典型的代碼到處理單元如下:
嘗試{
//下面是一些代碼,用於生成異常
}趕上(Tip_isklyucheniya_1 identifikator_1){
//在這裡有異常處理,根據其類型和條件;
}趕上(Tip_isklyucheniya_2 identifikator_2){
//在這裡有異常處理,根據其類型和條件;
}
關鍵字捕獲報告說代碼,並對其進行掃描的例外如下面描述的,待處理的,只要它與它的類型相符。 該標識符可以在處理所述碼塊作為參數來使用。
最後
當它從前面的章節中變得清晰,catch塊捕捉異常並進行處理。 但是,很多時候出現這樣的情況應該運行一些代碼,不管他們是否被抓的錯誤。 對於這個還有最後的關鍵字。 它用於增加的各種計數器的值,關閉文件或網絡連接。
該地塊提出了幾個catch塊發明的方法捕獲異常。 例如,包含在try代碼產生意想不到的情況,如冷。 然後,控制台將顯示表達式«感冒!»和«那是什麼值得慶賀的事情?»。 也就是說,最後塊在任何情況下執行。
事實上,這是一種避免引發終於出現。 它與虛擬機的完成連接。 找到如何實現它,就可以在互聯網上的開放空間。
throw關鍵字
投擲生成異常。 它的語法如下:
拋出新NewException();
還有就是創建了一個新的例外類型NewException()。 由於可以使用類型已經包含在標準的Java類庫,而原先由自己生產的開發者定義。
這種設計是任意方法的描述中,該呼叫應當然後在try塊內發生,以便能夠截取它的一部分。
關鍵字拋出
如果在的情況下該方法可以拋出一個異常,但不能妥善處理發展過程。 為此,在該方法簽名指定字拋出和可能的例外的類型。
該標籤是一種客戶端開發指標的,該方法無法處理他們相同的異常。 此外,如果錯誤類型檢查,則編譯器將迫使明確提出要求。
嘗試資源
Java版本7的開發已經包括的一大創新,與資源處理try塊。
許多對象在Java中創建,使用後應關閉以節約資源。 以前它必須考慮到這一點和手動停止這些實例。 然而,現在,他們似乎AutoClosable接口。 它有助於自動關閉放在try塊已使用的對象。 通過這種方法,變得更加方便編寫代碼,在其可讀性顯著上升。
自己的類Java異常
所描述的編程語言的創造者考慮到了設計各類突發事件的帳戶許多方面。 然而,所有的選項,以防止事件的結果是行不通的,所以在Java中實現自己定義異常的能力,這是適合於特定代碼的需求。
最簡單的方法來創建 - 從最合適的繼承對象上下文。
正巧有從Exception繼承,用來定義自己的異常類。 在MyException有兩個構造 - 默認情況下,第二個 - 的說法味精String類型。
然後,在公共教室FullConstructors實施方法F,其中包含簽名拋出MyException。 這個關鍵字意味著F可拋出像Java MyException異常。 此外,在該方法中體內產生的文本輸出到控制台本身和實際產生MyException,通過擲信息。
第二種方法是從第一個,當你創建一個例外,它傳遞一個字符串參數,這將在捕捉反映在控制台略有不同。 在主很顯然,F()和g()被放置在一個嘗試檢查和關鍵字捕捉配置成捕獲MyException。 處理的結果是顯示一個錯誤消息到控制台:
因此它來添加Java異常,通過自己的手。
結構異常
正如在Java中的所有對象,異常也繼承和具有層次結構。 在這種編程語言拋出的所有錯誤的根元素是類java.lang.Throwable。 從他2種繼承 - 錯誤和異常。
錯誤 - 信號的嚴重錯誤,未被選中Java異常。 攔截和處理這些數據在大多數情況下會發生在設計階段,而不是在需要在最終的應用程序代碼引入。
最常用的創建和分析的異常類是例外。 這反過來,又分為幾個分支,包括RuntimeException的。 通過RuntimeException的是運行時異常,也就是在節目中出現。 從它衍生的所有類都無法證實。
經常有例外
在Java中的異常,其名單如下呈現,是最常用,所以你應該詳細描述它們:
- ArithmeticException。 這些措施包括與算術運算相關的錯誤。 最明顯的例子 - 除以零。
- ArrayIndexOutOfBoundsException異常 - 上訴到超過總長度的數組編號。
- ArrayStoreException信息 - 嘗試分配陣列的不相容元素類型。
- ClassCastException異常 - 企圖把錯誤的一種類型到另一個。
- 拋出:IllegalArgumentException - 使用方法調用錯誤的說法。
- NegativeArraySizeException - 當你創建大小為負的數組例外。
- NullPointerException異常 - 引用的誤用為null。
- NumberFormatException - 如果發生在一個錯誤的字符串轉換為整數。
- UnsupportedOperationException異常 - 不支持操作。
這些例子代表各類型未檢查Java異常。 但這麼看檢查:
- ClassNotFoundException的 - 類未找到。
- IllegalAcccessException - 限制訪問類。
- InterruptedException的 - 流的中斷。
- NoSuchFieldException - 沒有必填字段。
例外的解釋
經常遇到異常說到應當指出的是它們在設計詮釋,可以正確感知。 接下來是一個簡短的清單中更詳細,其中可能有意想不到的情況說明。
NullPointerException異常。 當出現異常時,很第一種情況是吸引的引用的對象,則等於空。 它還延伸到零類實例的方法。 的NullPointerException可以以獲得相等的長度空陣列的情況下被拋出。 為了避免這種情況將定期檢查的空點。
ArrayIndexOutOfBoundsException異常。 任何程序無法在不使用陣列的存在。 因此,頻繁求助於它可以產生和錯誤。 當開發者試圖訪問不在索引列表的數組元素出現異常。 例如,所請求的值是高於或低於零長度。 很經常的是,該陣列中的開始零分的事實的結果。
發現
處理Java異常 - 一個強大的工具環境,極大地方便了程序員的工作,讓他創造一個乾淨,沒有代碼錯誤。 關於如何順利和穩定運行應用程序依賴於開發人員的地位和聲譽。
當然,在或多或少的簡單的程序來跟踪異常情況要容易得多。 但在幾十萬行大型自動化複合物有可能只作為長期測試和調試的結果。
對於從出現在某些應用程序的Java異常錯誤,有些公司提供的獎勵,當他們發現愛好者。 尤其是那些導致違反安全策略的軟件的讚賞。
Similar articles
Trending Now