JavaSE基礎知識(6)—異常和異常處理

一、異常的理解及體系結構圖

1、理解

異常:程序運行過程中發生的不正常現象。
java中的錯誤:
  語法錯誤
  運行異常
  邏輯錯誤

2、體系圖

java程序在執行過程中所發生的異常分為兩類:

  Error:Java虛擬機無法解決的嚴重問題。如JVM系統內部錯誤、資源耗盡等嚴重情況(StackOverflowError、OOM),一般不編寫針對性的代碼進行處理

  Exception:其它因編程錯誤或偶然的外在因素導致的一般性問題,可以使用針對性的代碼進行處理。一般有兩種解決方法:一是遇到錯誤就終止程序的運行。另一種方法是由程序員在編寫程序時,就考慮到錯誤的檢測、錯誤消息的提示,以及錯誤的處理。

  常見的異常可分為兩類:運行時異常和編譯時異常。異常體系圖如下,其中紅色部分為受檢異常,藍色部分為非受檢異常。

二、異常處理的方式

1、抓模型

(1)語法

try{
  ①
  //容易出現異常的代碼
  ②
}catch(異常類型 e){
  //處理異常的語句
  ③
}finally{
  //最后一定要執行的語句
  ④
}

執行順序 ★
  如果出現了異常: ①③④一定執行,⑤不一定。如果異常被成功捕獲,而且沒有其他跳轉,⑤會執行,否則⑤不執行
  如果沒有出現異常:①②④一定執行, ⑤不一定。如果沒有其他跳轉,⑤會執行,否則⑤不執行

(2)好處

①提高了用戶體驗性
②將正常代碼和容易出錯的代碼實現了分離,提高了代碼的閱讀性和維護性
③如果成功捕獲異常,則起到了攔截異常的作用,異常后面的語句會正常執行

(3)注意事項

①catch塊可以省略
②finally塊可以省略
③盡量使用多個catch塊,代替多個try catch
④不能濫用異常
⑤catch塊可以有多個,但如果catch塊的異常類型為父類類型,需要將該catch塊放在最后

2、拋模型(默認異常處理方式)

(1)語法

修飾符 返回類型 方法名(參數列表) throws 異常類型XX{
}
注意:異常類型XX為方法中容易出現的異常的類型或父類類型

(2)執行特點

將異常拋給調用方,如果調用方不處理,則繼續往上拋,直到拋給jvm。而jvm使用的是默認的處理方式。e.printStackTrace()

三、自定義異常

1、語法

class XXException extends ExceptionRuntimeException{
  public XXException(){}
  public XXException(String msg){super(msg);}
}

2、如何使用自定義異常

在需要生成異常對象的地方,添加如下語句:
  throw new XXException(異常信息);

四、常見問題解答

1、生成異常對象的方式

2種方式:
方式一:系統自動生成異常對象
  針對于:系統定義好的異常類
方式二:手動生成異常對象
  針對于:系統定義好的異常類和自定義的異常類
  語法:throw new 異常類型(實參);

2、子類重寫父類方法的異常說明

子類重寫的方法拋出的異常類型可以相同或為子類類型

class Father{
  public void run() throws Exception{}
}
class Son extends Father{
  public void run() throws Exception{}
}
class Daughter extends Father{
  public void run() throws IOException{}
}

3、throws和throw對比

?說明放的位置后面跟的東西
throws異常處理的方式方法聲明的地方異常類型 public void method throws XXXException{}
throw生成異常對象的關鍵字方法體中異常對象 throw new XXXException(msg)

轉載于:https://www.cnblogs.com/truthseeking/p/9538320.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397103.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397103.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397103.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

peripheralStateNotificationCB

1 /*********************************************************************2 * fn peripheralStateNotificationCB 外圍設備 狀態 通知 回調函數3 *4 * brief Notification from the profile of a state change. 通知來自于profile的狀態改變!5 *6 * …

mysql dump 1017_MySQL數據庫導出 - Can't Wait Any Longer - OSCHINA - 中文開源技術交流社區...

本文內容主要來自MySQL官方文檔:“MySQL5.1 Reference,2.10.3. 將MySQL數據庫拷貝到另一臺機器”注意:參數名與值間可以不用空格,如-uroot或-u root均可;某些參數會有不同含義1.數據庫導出(-A導出所有數據庫&#xff0…

Jsp2.0自定義標簽(第二天)——自定義循環標簽

今天是學習自定義標簽的第二天&#xff0c;主要是寫一個自定義的循環標簽。 先看效果圖&#xff1a; 前臺頁面Jsp代碼 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <%taglib prefix"myout…

正則表達式以什么開頭以什么結尾_股票hk是什么意思,股票st開頭是什么意思,新通聯股票...

股票hk是什么意思,股票st開頭是什么意思,新通聯股票股票hk是什么意思,股票st開頭是什么意思,新通聯股票我們首先解決時間跨度問題&#xff1a;如果您為諸如退休之類的遙遠目標投資&#xff0c;則應主要投資股票(同樣&#xff0c;我們建議您通過共同基金投資)。心理控制第一&…

讀書筆記--SQL必知必會03--排序檢索數據

3.1 排序數據 子句&#xff08;clause&#xff09; SQL語句由子句構成。一個子句通常由一個關鍵字加上所提供的數據組成。 ORDER BY子句可以取一個或多個列的名字&#xff0c;將SELECT語句檢索出的數據進行排序。 ORDER BY子句可以使用非檢索的列排序數據。 ORDER BY子句必須作…

mysql中編寫匿名塊_Oracle數據庫之Oracle_PL/SQL(1) 匿名塊

本文主要向大家介紹了Oracle數據庫之Oracle_PL/SQL(1) 匿名塊&#xff0c;通過具體的內容向大家展現&#xff0c;希望對大家學習Oracle數據庫有所幫助。1. PL/SQL 簡介PL/SQL是一種比較復雜的程序設計語言, 用于從各種環境中訪問Oracle數據庫。為什么使用PL/SQL&#xff1f;Ora…

安裝了多個Oracle11g的客戶端,哪個客戶端的tnsnames.ora會起作用?

如果我們由于需要安裝了多個Oracle的client&#xff0c;哪個客戶端的tnsnames.ora會起作用呢&#xff1f; 答案是&#xff1a; 在安裝好clinent端后&#xff0c;安裝程序會把client的bin目錄放到path里面&#xff0c;path中在前面的client會被首先搜索&#xff0c;其中的tnsnam…

電腦顯示連接了網絡但是不能上網_為什么電腦插上網線顯示已連接卻上不了網...

嘗試斷一下網&#xff0c;或者重啟一下系統看一下是否解決&#xff1b;也可能是開啟了網絡代理&#xff0c;可以重置一下瀏覽器或者網絡設置&#xff1b;還可以使用安全管家軟件&#xff0c;掃描一下網絡設置。以下是詳細介紹&#xff1a;1、有時候系統顯示已經連接其實并沒有真…

Atcoder ARC101 E 樹dp

https://arc101.contest.atcoder.jp/tasks/arc101_c 題解是也是dp&#xff0c;好像是容斥做的&#xff0c;但是看不懂&#xff0c;而且也好像沒講怎么變n^2&#xff0c;看了寫大佬的代碼&#xff0c;自己理解了一下 #include <bits/stdc.h> #include <ext/pb_ds/assoc…

compress命令--Linux命令應用大詞典729個命令解讀

內容來源于人民郵電出版社《Linux命令應用大詞典》講述729個命令&#xff0c;1935個例子學習Linux系統的參考書、案頭書&#xff0c;遇到不懂的命令或命令選項一查即可爭取每天都發布內容本文出自 “airfish2000” 博客&#xff0c;更多命令查看博客&#xff1a;http://airfish…

javaweb學習總結(三十九)——數據庫連接池

javaweb學習總結(三十九)——數據庫連接池 數據庫連接池的實現及原理 JNDI 在 J2EE 中的角色轉載于:https://www.cnblogs.com/daishuguang/p/5041845.html

python getopterror_python3 getopt用法

python channel_builder.py -s /Users/graypn/ -d /Users/graypn/Documents -m 7 --outreport/xx.html參數也分長格式和短格式短格式&#xff1a;-s長格式&#xff1a;--sourceopts, args getopt.getopt(sys.argv[1:], "hs:d:m:v:p:c:",["help", "sr…

excel刪除空行_Excel里99.9%的人都踩過的坑,早看早避開!

本文作者丨可可&#xff08;小 E 背后的小仙女&#xff09;本文由「秋葉 Excel」原創發布如需轉載&#xff0c;請在公眾號發送關鍵詞「轉載」查看說明2019 年上班第一天感覺怎么樣呢&#xff1f;望著滿屏幕鋪天蓋地的表格&#xff0c;我只能摸摸自己還沒下去的小肚子&#xff0…

CentOS 6.5 Zabbix-agent3.2 安裝 1.0版

1.關閉防火墻service iptables stop2.更換源、安裝zabbix-agentrpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpmyum install -y zabbix-agent3.修改配置文件vim /etc/zabbix/zabbix_agentd.confServer192.168.8.228 ser…

centos下利用httpd搭建http服務器方法

centos下利用httpd搭建http服務器方法 1. 解決的問題 在開發測試過程中&#xff0c;分析圖片任務需要將圖片保存在服務器端&#xff0c;通過url來訪問和下載該圖片&#xff0c;這就需要使用一臺圖片服務器&#xff0c;但常常遇到圖片服務器匱乏的情況&#xff0c;為了解決該問題…

[轉]Java7中的ForkJoin并發框架初探(上)——需求背景和設計原理

詳見&#xff1a; http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp83 這篇我們來簡要了解一下JavaSE7中提供的一個新特性 —— Fork Join 框架。 0. 處理器發展和需求背景 回想一下并發開發的初衷&#xff0c;其實可以說是有兩點&#xff0c;或者說可以從兩個方面…

安裝oculus運行時出現問題_U盤安裝windows10出現的問題解決方法

安裝windows10 出現的問題之前安裝windows10都沒什么問題&#xff0c;今天安裝windows10出現了好多問題&#xff0c;記錄一下。我這個教程我覺得是最好的安裝教程安裝windows10教程問題1. 我們無法創建新的分區&#xff0c;找不到現有分區&#xff08;或者因為MBR分區表問題&am…

JavaFx導出文件

導出文件格式可選 protected void handExportDateAction(ActionEvent event) {// ShowDialog.showConfirmDialog(FXRobotHelper.getStages().get(0),// "是否導出數據到txt&#xff1f;", "信息");FileChooser fileChooser new FileChooser();FileChooser…

python選擇排序從大到小_Python實現選擇排序

一、選擇排序簡介選擇排序(Selection sort)是一種簡單直觀的排序算法。選擇排序首先從待排序列表中找到最小(大)的元素&#xff0c;存放到元素列表的起始位置(與起始位置進行交換)&#xff0c;作為已排序序列&#xff0c;第一輪排序完成。然后&#xff0c;繼續從未排序序列中找…

【Ubuntu14】Nginx+PHP5+Mysql記錄

這次因為工作原因&#xff0c;需要在Linux下進行開發。推薦的環境是Ubuntu14NginxPHPMysql。環境搭建好之后&#xff0c;裝上GIT&#xff0c;裝上IDE&#xff0c;覺得Mysql命令界面麻煩又裝了個Navicat。總體用下來感覺很帶感。 【虛擬機與鏡像文件】 這里我采用的虛擬機是VMwa…