1. 程式人生 > >java異常機制分析

java異常機制分析

Java 異常處理

異常是程式中的一些錯誤,但並不是所有的錯誤都是異常,並且錯誤有時候是可以避免的。

比如說,你的程式碼少了一個分號,那麼執行出來結果是提示是錯誤 java.lang.Error;如果你用System.out.println(11/0),那麼你是因為你用0做了除數,會丟擲 java.lang.ArithmeticException 的異常。

異常發生的原因有很多,通常包含以下幾大類:

  • 使用者輸入了非法資料。
  • 要開啟的檔案不存在。
  • 網路通訊時連線中斷,或者JVM記憶體溢位。

這些異常有的是因為使用者錯誤引起,有的是程式錯誤引起的,還有其它一些是因為物理錯誤引起的。-

要理解Java異常處理是如何工作的,你需要掌握以下三種類型的異常:

  • 檢查性異常:最具代表的檢查性異常是使用者錯誤或問題引起的異常,這是程式設計師無法預見的。例如要開啟一個不存在檔案時,一個異常就發生了,這些異常在編譯時不能被簡單地忽略。
  • 執行時異常: 執行時異常是可能被程式設計師避免的異常。與檢查性異常相反,執行時異常可以在編譯時被忽略。
  • 錯誤: 錯誤不是異常,而是脫離程式設計師控制的問題。錯誤在程式碼中通常被忽略。例如,當棧溢位時,一個錯誤就發生了,它們在編譯也檢查不到的。

Java異常類層次結構圖:


Throwable 類的子類:

Error用來指示執行時環境發生的錯誤。

例如,JVM 記憶體溢位。一般地,程式不會從錯誤中恢復。

Exception

所有的異常類是從 java.lang.Exception 類繼承的子類。

異常類有兩個主要的子類:IOException 類和 RuntimeException 類。

Java 內建異常類:

Java包含兩種異常:checked異常unchecked異常

可查異常(編譯器要求必須處置的異常):正確的程式在執行中,很容易出現的、情理可容的異常狀況可查異常雖然是異常狀況,但在一定程度上它的發生是可以預計的,而且一旦發生這種異常狀況,就必須採取某種方式進行處理。

除了RuntimeException及其子類以外,其他的Exception類及其子類都屬於可查異常。這種異常的特點是Java編譯器會檢查它,也就是說,當程式中可能出現這類異常,要麼用try-catch語句捕獲它,要麼用throws子句宣告丟擲它,否則編譯不會通過

例子:

Unchecked異常

必須try-catch-finally,或者throws

public static String readFiles(){
	FileInputStream fileInputStream = new FileInputStream("d:/txt.txt");
	int a = fileInputStream.read();
	return null;
}
try {
	FileInputStream fileInputStream = new FileInputStream("d:/txt.txt");
	int a = fileInputStream.read();
	return "success";
} catch (FileNotFoundException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	return "nofound";
} catch (IOException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	return "IOException";
}finally{
	System.out.println("finally");//不需要返回值
}

int  i = 1/0;則為Unchecked異常

補充try-catch-finally如何執行:

try-catch:給返回值賦值,但沒有返回。執行finally。return 最終的返回值。

相關推薦

java異常機制分析

Java 異常處理 異常是程式中的一些錯誤,但並不是所有的錯誤都是異常,並且錯誤有時候是可以避免的。 比如說,你的程式碼少了一個分號,那麼執行出來結果是提示是錯誤 java.lang.Error;如果你用System.out.println(11/0),那麼你

Java異常機制

java異常類 int poi 處理異常 title turn 多條 一個 機制 Java異常機制   軟件程序在運行過程中,非常可能遇到剛剛提到的這些問題,我們稱之為異常,英文是:Exception。在Java的異常處理機制中,引進了很多用來描述和處理異常的類,稱為異常類

Java異常機制用到的幾個關鍵字:try、catch、finally、 throw、throws,都有什麼作用?

• try – 用於監聽。將要被監聽的程式碼(可能丟擲異常的程式碼)放在try語句塊之內,當try語句塊內發生異常時,異常就被丟擲。 • catch – 用於捕獲異常。catch用來捕獲try語句塊中發生的異常。 • finally – finally語句塊總是會被執行。它主要用於回收在

由命令列掛起感悟設計-java異常機制思考、你不知道的ctrl+c

1 問題複述 開發中遇到一個問題,在敲一個命令列的時候,karaf控制檯給掛起了,日誌沒有異常,通過ssh遠端連線還是可以訪問控制檯,但是簡單的回溯了一下程式碼,仔細一看,好像沒有問題,後來仔細跟蹤了以下命令列呼叫邏輯,在某個io操作中,使用了一個異常捕獲,然後在期望結果未給出的時候捕獲

Java基礎——Java異常機制

1.Java異常關鍵字 try{}           有可能出現異常的程式碼 catch{}      根據try{}語句塊中的異常和()中的異常來進行處理,可寫多個catch finally

學習筆記(五):Java異常機制

主要從這幾個方面來說說Java中的異常: 圖1.知識體系1.  異常:指的是程式在執行過程中,出現的非正常的情況,最終會導致JVM的非正常停止。      異常的繼承體系如下: 圖1.1 異常的繼承體系    Throwable類是 Java 語言中所有錯誤或異常的父類

你爸媽都能看懂的JAVA異常機制入門

目錄 異常的型別 編譯時異常 例子1 例子2 執行時異常 例子3 例子4 異常處理 最簡單的異常處理 例子5 捕捉特定的異常 例子6

Java異常機制--try catch finally 執行順序詳解

引言 關於try catch finally 執行順序的筆試面試題目非常的多,我曾經在牛客網刷題的時候不止一次的碰到過,而且不止一次的做錯過,這裡面需要涉及的細節如果不弄清楚每次做題就會產生似是而非的感覺。這次查閱了很多相關資料,關於try catch fin

JAVA異常機制介紹/如何正確的進行JAVA異常處理

1. 課前練習 在閱讀本文的內容之前,請從下面這段程式碼中找出異常處理有哪些不正確的地方。如果不能找出至少兩處錯誤,說明你還是一個“菜鳥”,對JAVA的異常處理機制還不夠了解,需要仔細閱讀本文的內容,並走查一下自己編寫的程式碼。如果你可以找出至少兩處錯誤,恭喜你,你已

通俗程式設計——白話JAVA異常機制

任何程式都追求正確有效的執行,除了保證我們程式碼儘可能的少出錯之外,我們還要考慮如何有效的處理異常,一個良好的異常框架對於系統來說是至關重要的。最近在給公司寫採集框架的時候系統的瞭解一邊,收穫頗多,

Java異常機制異常處理建議

1、Java異常機制        異常指不期而至的各種狀況,如:檔案找不到、網路連線失敗、非法引數等。異常是一個事件,它發生在程式執行期間,干擾了正常的指令流程。Java通過API中Throwable類的眾多子

Java-異常機制詳解以及開發時異常設計的原則要求

異常處理的合理性完整性體現了一門語言是否成熟。而Java作為目前最流行的開發語言之一,固然具有一個完善的異常處理機制。本文將對異常處理機制來一次大的總結,後面講解一些原則性問題、開發技巧以及經常遇到的異常。 文章結構:1.異常機制樹的講解; 2.異常處理

Java異常機制Throwable

Java中異常的概念以及處理異常 在Java程式執行期間出現了一個錯誤,這個錯誤可能是由於檔案包含了錯誤資訊,或者是由於網路連接出現問題,也可以是因為使用了無效的陣列下標,或者是試圖使用一個沒有被賦值

JAVA異常機制詳解

Throwable 是所有 Java 程式中錯誤處理的父類 ,有兩種資類: Error 和 Exception 。    Error :表示由 JVM 所偵測到的無法預期的錯誤,由於這是屬於 JVM 層次的嚴重錯誤 ,導致 JVM 無法繼續執行,因此,這是不可捕捉到的,無法

java異常程式碼分析

覺得自己是一個Java專家嗎?是否肯定自己已經全面掌握了Java的異常處理機制?在下面這段程式碼中,你能夠迅速找出異常處理的六個問題嗎? 1 OutputStreamWriter out = ... 2 java.sql.Connection conn =

Java異常機制總結

在java中,異常機制用的比C++頻繁,但是一直沒有比較系統完整地對java的異常機制作總結,使用異常的過程中總有點心裡沒底的感覺,這次進行一次相對完整的總結 首先是java的異常機制繼承體系: Java的異常機制分成兩大類:error(錯誤)和exception(異常),

Java異常機制try、catch、finally、throw、throws五個關鍵字。

 Java異常機制主要依賴於try、catch、finally、throw、throws五個關鍵字。          1.try:它裡面放置可能引發異常的程式碼          2.catch:後面對應異常型別和一個程式碼塊,用於表明該catch塊用於處理這種型別

一文了解java異常機制

1.異常的概述 1.1什麼是異常? 異常:程式在執行過程中發生由於外部問題導致的程式異常事件,發生的異常會中斷程式的執行。(在Java等面向物件的程式語言中)異常本身是一個物件,產生異常就是產生了一個異常物件。注意在java中異常不是錯誤,在下文的異常的分類中有解釋。 舉個生活中的栗子來說明異常吧,假如

[ Coding七十二絕技 ] 如何利用Java異常快速分析原始碼

前言 異常一個神奇的東西,讓廣大程式設計師對它人又愛又恨。愛它,通過它能快速定位錯誤,經過層層磨難能學到很多逼坑大法。恨他,快下班的時刻,週末的早晨,它踏著七彩雲毫無徵兆的來了。 今天,要聊的是它的一項神技 : 輔助原始碼分析。對的,沒有聽錯,它有此功效,只不過我們被恨衝昏了頭腦,沒看到它的美

Java異常機制詳細分析

回到頂部 異常的概念 異常是程式中的一些錯誤,但並不是所有的錯誤都是異常,並且錯誤有時候是可以避免的。 比如說,你的程式碼少了一個分號,那麼執行出來結果是提示是錯誤java.lang.Error;如果你用System.out.println(11