中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做相框的網(wǎng)站富陽網(wǎng)站seo價格

做相框的網(wǎng)站,富陽網(wǎng)站seo價格,微信做淘寶客網(wǎng)站有哪些,新聞頭條新聞關(guān)于近期重大事件目錄 一.異常的概念與體系結(jié)構(gòu): 1.1異常的概念: 1.2一些常見的異常: 1.3異常的體系結(jié)構(gòu): 1.4異常的分類: 二.異常的處理機(jī)制: 2.1 拋出異常: 2.2異常的捕獲: 2.3try-catch-&…

目錄

一.異常的概念與體系結(jié)構(gòu):

1.1異常的概念:

1.2一些常見的異常:

1.3異常的體系結(jié)構(gòu):

1.4異常的分類:

二.異常的處理機(jī)制:

2.1?拋出異常:

2.2異常的捕獲:

?2.3try-catch-(finally)捕獲并處理:

?2.4Throwable類中的常用方法:

三.自定義異常:

java中常見的異常:

1. runtimeException子類:

2.IOException


一.異常的概念與體系結(jié)構(gòu):

1.1異常的概念:

在生活中,一個人表情痛苦,出于關(guān)心,可能會問:你是不是生病了,需要我陪你去看醫(yī)生嗎?

在程序中也是一樣,程序猿是一幫辦事嚴(yán)謹(jǐn)、追求完美的高科技人才。在日常開發(fā)中,絞盡腦汁將代碼寫的盡善盡美,在程序運行過程中,難免會出現(xiàn)一些奇奇怪怪的問題。有時通過代碼很難去控制,比如:數(shù)據(jù)格式不對、網(wǎng)絡(luò)不通暢、內(nèi)存報警等。
🧐🧐🧐 Java 中,將程序執(zhí)行過程中發(fā)生的不正常行為稱為異常

具體來說:

😀😀😀異常指不期而至的各種狀況,如:文件找不到、網(wǎng)絡(luò)連接失敗、非法參數(shù)等。異常是一個事件,它發(fā)生在程序運行期間,干擾了正常的指令流程。Java通 過API中Throwable類的眾多子類描述各種不同的異常。因而,Java異常都是對象,是Throwable子類的實例,描述了出現(xiàn)在一段編碼中的錯誤條件。當(dāng)條件生成時,錯誤將引發(fā)異常。

1.2一些常見的異常:

?①.算術(shù)異常:

?②.數(shù)組越界異常:

?③.空指針異常:

從上述過程中可以看到,👌👌java中不同類型的異常,都有與其對應(yīng)的類來進(jìn)行描述

1.3異常的體系結(jié)構(gòu):

?從上圖中我們可以看出:

  • 🐻🐻🐻Throwable是異常體系的頂層類,其派生出兩個重要的子類, Error Exception
  • 🐻🐻🐻Error 指的是 Java 虛擬機(jī)無法解決的嚴(yán)重問題,比如: JVM 的內(nèi)部錯誤、資源耗盡等 ,典型代表: StackOverflowError OutOfMemoryError ,一旦發(fā)生回力乏術(shù)。
  • Exception 異常產(chǎn)生后程序員可以通過代碼進(jìn)行處理,使程序繼續(xù)執(zhí)行。

1.4異常的分類:

通常,Java的異常(包括Exception和Error)分為可查的異常(checked exceptions)和不可查的異常(unchecked exceptions)。

🦉🦉🦉可查異常(編譯器要求必須處置的異常):正確的程序在運行中,很容易出現(xiàn)的、情理可容的異常狀況??刹楫惓km然是異常狀況,但在一定程度上它的發(fā)生是可以預(yù)計的,而且一旦發(fā)生這種異常狀況,就必須采取某種方式進(jìn)行處理。

?🦉🦉🦉不可查異常(編譯器不要求強(qiáng)制處置的異常):包括運行時異常(RuntimeException與其子類)和錯誤(Error)。

異??赡茉诰幾g時發(fā)生,也可能在程序運行時發(fā)生,根據(jù)發(fā)生的時機(jī)不同,可以將異常分為:

①.🧐🧐運行時異常(RuntimeException):

在程序執(zhí)行期間發(fā)生的異常,稱為運行時異常,也稱為非受檢查異常 (Unchecked Exception)
RunTimeException 以及其子類對應(yīng)的異常,都稱為運行時異常 。比如: NullPointerException 、
ArrayIndexOutOfBoundsException ArithmeticException 。(上面的常見異常例子)

②.🧐🧐編譯時異常,又稱檢查異常(Checked Exception):

是RuntimeException以外的異常,類型上都屬于Exception類及其子類。從程序語法角度講是必須進(jìn)行處理的異常,如果不處理,程序就不能編譯通過。如IOException、SQLException等以及用戶自定義的Exception異常,一般情況下不自定義檢查異常。

二.異常的處理機(jī)制:

🧐🧐🧐在 Java 應(yīng)用程序中,異常處理機(jī)制為:拋出異常,捕捉異常。

?拋出異常和捕捉異常

  • 🦉🦉🦉?拋出異常:當(dāng)一個方法出現(xiàn)錯誤引發(fā)異常時,方法創(chuàng)建異常對象并交付運行時系統(tǒng),異常對象中包含了異常類型和異常出現(xiàn)時的程序狀態(tài)等異常信息。運行時系統(tǒng)負(fù)責(zé)尋找處置異常的代碼并執(zhí)行。
  • 🦉🦉🦉 捕獲異常:在方法拋出異常之后,運行時系統(tǒng)將轉(zhuǎn)為尋找合適的異常處理器(exception handler)。潛在的異常處理器是異常發(fā)生時依次存留在調(diào)用棧中的方法的集合。當(dāng)異常處理器所能處理的異常類型與方法拋出的異常類型相符時,即為合適 的異常處理器。運行時系統(tǒng)從發(fā)生異常的方法開始,依次回查調(diào)用棧中的方法,直至找到含有合適異常處理器的方法并執(zhí)行。當(dāng)運行時系統(tǒng)遍歷調(diào)用棧而未找到合適 的異常處理器,則運行時系統(tǒng)終止。同時,意味著Java程序的終止。

2.1?拋出異常:

在編寫程序時,如果程序中出現(xiàn)錯誤,此時就需要將錯誤的信息告知給調(diào)用者,比如:參數(shù)檢測。
Java中,可以借助throw 關(guān)鍵字,拋出一個指定的異常對象,將錯誤信息告知給調(diào)用者。具體語法如下:

?舉個例子:

public class TestException {public static void main(String[] args) {int[] array = {1,2,3};getElement(array,3);}public static int getElement(int[] array,int index){if(array == null){//在方法體內(nèi)部拋出異常throw new NullPointerException("傳遞的數(shù)組為null");}if(index < 0 || index >= array.length){throw new ArrayIndexOutOfBoundsException("傳遞的數(shù)組下表越界");}return array[index];}
}

運行結(jié)果(這里取了不存在的數(shù)組下標(biāo),拋出數(shù)組越界異常):

🧐!!!拋出異常的注意事項:

  • 🐞🐞🐞throw必須寫在方法體內(nèi)部
  • 🦉🦉拋出的對象必須是 Exception 或者 Exception 的子類對象
  • 🦉🦉如果拋出的是 RunTimeException 或者 RunTimeException 的子類,則可以不用處理,直接交給 JVM 來處理
    • 🦉🦉如果拋出的是編譯時異常,用戶必須處理,否則無法通過編譯
    • 🐞🐞🐞異常一旦拋出,其后的代碼就不會執(zhí)行

    2.2異常的捕獲:

    🐻🐻🐻處在方法聲明時參數(shù)列表之后,當(dāng)方法中拋出編譯時異常,用戶不想處理該異常,此時就可以借助 throws 將異常拋給方法的調(diào)用者來處理。即當(dāng)前方法不處理異常,提醒方法的調(diào)用者處理異常

語法格式:

語法格式:
修飾符 返回值類型 方法名(參數(shù)列表) throws 異常類型1,異常類型2...{
}

舉個例子:

class Person implements Cloneable{String name;int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}
public class TestException {public static void main(String[] args) throws CloneNotSupportedException{Person person = new Person("坤坤",18);Person person1 = (Person)person.clone();System.out.println(person1);}}

運行結(jié)果:

🐻🐻🐻?調(diào)用聲明拋出異常的方法時,調(diào)用者必須對該異常進(jìn)行處理,或者繼續(xù)使用throws拋出

注意事項:

  • 🐞🐞🐞throws必須跟在方法的參數(shù)列表之后
  • 🐞🐞🐞聲明的異常必須是 Exception 或者 Exception 的子類
  • 🐞🐞🐞方法內(nèi)部如果拋出了多個異常, throws 之后必須跟多個異常類型,之間用逗號隔開,如果拋出多個異常類型 具有父子關(guān)系,直接聲明父類即可。

?2.3try-catch-(finally)捕獲并處理:

🧐🧐🧐throws對異常并沒有真正處理,而是將異常報告給拋出異常方法的調(diào)用者,由調(diào)用者處理。如果真正要對異常進(jìn)行處理,就需要try-catch。
try-catch語法格式:
    try {// 可能會發(fā)生異常的程序代碼} catch (Type1 id1) {// 捕獲并處理try拋出的異常類型Type1} catch (Type2 id2) {// 捕獲并處理try拋出的異常類型Type2} finally {// 無論是否發(fā)生異常,都將執(zhí)行的語句塊}// 后序代碼
// 當(dāng)異常被捕獲到時,異常就被處理了,這里的后序代碼一定會執(zhí)行
// 如果捕獲了,由于捕獲時類型不對,那就沒有捕獲到,這里的代碼就不會被執(zhí)行

?try-catch-finally 規(guī)則(異常處理語句的語法規(guī)則):

  • 🐞 必須在 try 之后添加 catch 或 finally 塊。try 塊后可同時接 catch 和 finally 塊,但至少有一個塊。
  • 🐞必須遵循塊順序:若代碼同時使用 catch 和 finally 塊,則必須將 catch 塊放在 try 塊之后。
  • 🐞一個 try 塊可能有多個 catch 塊。若如此,則執(zhí)行第一個匹配塊。即Java虛擬機(jī)會把實際拋出的異常對象依次和各個catch代碼塊聲明的異常類型匹配,如果異常對象為某個異常類型或其子類的實例,就執(zhí)行這個catch代碼塊,不會再執(zhí)行其他的 catch代碼塊

舉個例子:

public class TestException {public static void main(String[] args) {try {int[] array = null;System.out.println(array.length);}catch (ArithmeticException e) {e.printStackTrace();System.out.println("處理ArithmeticException異常....");}catch (NullPointerException e) {e.printStackTrace();System.out.println("處理NullPointerException異常....");}finally {System.out.println("finally中的代碼一定會執(zhí)行~");}System.out.println("后續(xù)代碼程序繼續(xù)執(zhí)行.....");}
}

運行結(jié)果(拋出空指針異常):

🧐🧐try-catch-finally語句塊執(zhí)行

?2.4Throwable類中的常用方法:

注意:catch關(guān)鍵字后面括號中的Exception類型的參數(shù)e。Exception就是try代碼塊傳遞給catch代碼塊的變量類型,e就是變量名。catch代碼塊中語句"e.getMessage();"用于輸出錯誤性質(zhì)。通常異常處理常用3個函數(shù)來獲取異常的有關(guān)信息:
  • getCause():返回拋出異常的原因。如果 cause 不存在或未知,則返回 null。
  • ?getMeage():返回異常的消息信息。
  • printStackTrace():對象的堆棧跟蹤輸出至錯誤輸出流,作為字段 System.err 的值。

三.自定義異常:

Java 中雖然已經(jīng)內(nèi)置了豐富的異常類 , 但是并不能完全表示實際開發(fā)中所遇到的一些異常,此時就需要維護(hù)符合我們實際情況的異常結(jié)構(gòu)
實現(xiàn)方法:
  • 🐻🐻🐻自定義異常類,然后繼承自 Exception 或者 RunTimeException
  • 🐻🐻🐻實現(xiàn)一個帶有 String 類型參數(shù)的構(gòu)造方法,參數(shù)含義:出現(xiàn)異常的原因
舉個例子:
import java.lang.Exception;
public class TestException {static int quotient(int x, int y) throws MyException { // 定義方法拋出異常if (y < 0) { // 判斷參數(shù)是否小于0throw new MyException("除數(shù)不能是負(fù)數(shù)"); // 異常信息}return x/y; // 返回值}public static void main(String args[]) { // 主方法int  a =3;int  b =0;try { // try語句包含可能發(fā)生異常的語句int result = quotient(a, b); // 調(diào)用方法quotient()} catch (MyException e) { // 處理自定義異常System.out.println(e.getMessage()); // 輸出異常信息} catch (ArithmeticException e) { // 處理ArithmeticException異常System.out.println("除數(shù)不能為0"); // 輸出提示信息} catch (Exception e) { // 處理其他異常System.out.println("程序發(fā)生了其他的異常"); // 輸出提示信息}}}
class MyException extends Exception { // 創(chuàng)建自定義異常類,繼承父類ExceptionString message; // 定義String類型變量public MyException(String ErrorMessagr) { // 父類方法message = ErrorMessagr;}public String getMessage() { // 覆蓋getMessage()方法return message;}
}

注意事項:

  • 🦉🦉🦉自定義異常通常會繼承自 Exception 或者 RuntimeException
  • 🦉🦉🦉繼承自 Exception 的異常默認(rèn)是受查異常
  • 🦉🦉🦉繼承自 RuntimeException 的異常默認(rèn)是非受查異常

java中常見的異常:

1. runtimeException子類:
  • ? ? ?java.lang.ArrayIndexOutOfBoundsException
  • ? ? 數(shù)組索引越界異常。當(dāng)對數(shù)組的索引值為負(fù)數(shù)或大于等于數(shù)組大小時拋出。
  • ? ? java.lang.ArithmeticException
  • ? ? 算術(shù)條件異常。譬如:整數(shù)除零等。
  • ? ? java.lang.NullPointerException
  • ? ? 空指針異常。當(dāng)應(yīng)用試圖在要求使用對象的地方使用了null時,拋出該異常。譬如:調(diào)用null對象的實例方法、訪問null對象的屬性、計算null對象的長度、使用throw語句拋出null等等
  • ? ? java.lang.ClassNotFoundException
  • ? ? 找不到類異常。當(dāng)應(yīng)用試圖根據(jù)字符串形式的類名構(gòu)造類,而在遍歷CLASSPAH之后找不到對應(yīng)名稱的class文件時,拋出該異常。
  • ? ?java.lang.NegativeArraySizeException ?數(shù)組長度為負(fù)異常
  • ? ?java.lang.ArrayStoreException 數(shù)組中包含不兼容的值拋出的異常
  • ? ?java.lang.SecurityException 安全性異常
  • ? ?java.lang.IllegalArgumentException 非法參數(shù)異常
2.IOException
  • IOException:操作輸入流和輸出流時可能出現(xiàn)的異常。
  • EOFException ? 文件已結(jié)束異常
  • FileNotFoundException ? 文件未找到異常

參考文章:java(3)-深入理解java異常處理機(jī)制_java處理異常-CSDN博客?

結(jié)語:?寫博客不僅僅是為了分享學(xué)習(xí)經(jīng)歷,同時這也有利于我鞏固自己的知識點,總結(jié)該知識點,由于作者水平有限,對文章有任何問題的還請指出,接受大家的批評,讓我改進(jìn)。同時也希望讀者們不吝嗇你們的點贊+收藏+關(guān)注,你們的鼓勵是我創(chuàng)作的最大動力!

http://www.risenshineclean.com/news/3945.html

相關(guān)文章:

  • 建一個公司網(wǎng)站網(wǎng)站營銷策劃
  • 分析一個網(wǎng)站湖南網(wǎng)絡(luò)推廣機(jī)構(gòu)
  • 公司做網(wǎng)站的費用記到哪個科目推廣引流網(wǎng)站
  • 深圳做公司網(wǎng)站他達(dá)拉非片
  • ninety wordpress插件湖南網(wǎng)站seo地址
  • 幫一個企業(yè)做網(wǎng)站流程網(wǎng)絡(luò)整合營銷是什么意思
  • 電影網(wǎng)站域名seo營銷推廣
  • 沒有網(wǎng)站可以做seo排名嗎個人對網(wǎng)絡(luò)營銷的看法
  • 安徽做網(wǎng)站的公司專門做推廣的公司
  • 創(chuàng)業(yè)網(wǎng)站怎么做如何推廣自己的微信公眾號
  • 山西網(wǎng)站建設(shè)設(shè)計百度seo
  • 做調(diào)查問卷用的網(wǎng)站或軟件今日百度搜索風(fēng)云榜
  • 用php做網(wǎng)站難嗎南昌seo全網(wǎng)營銷
  • 重慶市工程建設(shè)信息網(wǎng)新網(wǎng)站網(wǎng)頁設(shè)計圖
  • wordpress 反應(yīng)慢seo網(wǎng)站優(yōu)化推廣教程
  • 網(wǎng)站建設(shè)畢業(yè)論文5000字國內(nèi)廣告投放平臺
  • 官方查企業(yè)信息的網(wǎng)站廣州網(wǎng)站快速排名
  • 怎么把做的頁面放到網(wǎng)站上站長工具seo綜合查詢權(quán)重
  • 網(wǎng)站公司建設(shè) 中山分類達(dá)人介紹
  • 什么顏色做網(wǎng)站好看企點qq
  • 赤峰建設(shè)淘寶網(wǎng)站全國新增確診病例
  • 上海網(wǎng)站建設(shè)覺策動力軟文投放平臺有哪些
  • 上海做企業(yè)網(wǎng)站什么是搜索關(guān)鍵詞
  • 大連建設(shè)工程集團(tuán)有限公司電話seo中文全稱是什么
  • 濟(jì)南網(wǎng)站建設(shè)公司百度搜索頁
  • 小說網(wǎng)站得廣告怎么做淘寶推廣方式
  • 品牌廠家網(wǎng)站建設(shè)貴州seo技術(shù)查詢
  • 網(wǎng)站新聞審核怎么做百度商城
  • 數(shù)據(jù)庫網(wǎng)站制作新app推廣去哪里找
  • 做中文網(wǎng)站的公司2022最近熱點事件及評述