陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司 第八章 例外處理 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
例外處理 例外的基本觀念 多重例外處理 throw 與 throws.
例外與檔案處理 例外處理 拋出例外 串流 Stream FileReader、FileWriter
定期定額該積極還是穩健 積極型獲利高,穩健型風險低 財富想倍增,就要選擇波動愈大的積極型基金,愈
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
陳維魁 博士 儒林圖書公司 第六章 領域與範圍 陳維魁 博士 儒林圖書公司.
Chapter 5 迴圈.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
Ch11 JAVA的例外處理 物件導向程式設計(II).
例外處理(Exception Handling)
陳維魁 博士 儒林圖書公司 第七章 參數的傳遞 陳維魁 博士 儒林圖書公司.
第1章 認識Arduino.
Java基础 JavaSE异常.
JSP自定义标签技术的分析与应用 ----Custom Tag 的分析与应用
第四章 流程控制(一) if,if-else 與 switch
JAVA 编 程 技 术 主编 贾振华 2010年1月.
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
C語言簡介 日期 : 2018/12/2.
第 14 章 例外處理.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
Java语言程序设计 第五部分 Java异常处理.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
9.1 程式偵錯 9.2 捕捉例外 9.3 自行拋出例外 9.4 自定例外類別 9.5 多執行緒
雲端計算.
Java 程式設計 講師:FrankLin.
service-side: throw Exceptions client-side: try-and-catch
异常及处理.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Topic Introduction—RMI
第一單元 建立java 程式.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
義守大學電機工程學系 陳慶瀚 第4章 VHDL Sequential語法 義守大學電機工程學系 陳慶瀚
Definition of Trace Function
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
第7章 异常处理.
CH05. 選擇敘述.
期末考.
GUI Title and GUI Status
緩衝區溢位攻擊 學生:A 羅以豪 教授:梁明章
挑戰C++程式語言 ──第8章 進一步談字元與字串
Quiz7 繳交期限: 12/14 23:59.
陳維魁 博士 儒林圖書公司 陳維魁 博士 儒林圖書公司.
引用檔案.
Flash 8:開口中 從Y:\ 複製『開口中.fla』到 D:\ 更改名稱為:s3x99 (你的班號) 雙按開啟檔案 2019年5月7日
表格(HTML – FORM)
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
第二章 Java基本语法 讲师:复凡.
Java程序设计 第17章 异常和断言.
物件導向程式設計 參考書目: 1. 洪維恩,C++ 教學手冊 第三版,旗標出版圖書公司。 2. 陳錦揮,Java 初學指引,博碩文化 3
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
方格紙上畫正方形.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Chapter 4 Multi-Threads (多執行緒).
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
陳維魁 博士 儒林圖書公司 第六章 領域與範圍 陳維魁 博士 儒林圖書公司.
第五章 例外處理(Exception Handling)與Package
方法(Method) 函數.
InputStreamReader Console Scanner
Presentation transcript:

陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司 第八章 例外處理 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司

大綱 基本觀念 PL/1語言的例外處理 ADA語言的例外處理 C++語言的例外處理 Java語言的例外處理 精選習題

基本觀念 例外處理(exception handling)是指程式執行的過程中,發生異常狀況時,系統所提供的處理方法 例外處理允許不同於傳統啟動與終止程序執行的方法來轉移程式的控制權 一個程序可在許多種情況發生時被終止執行,如檔案的結束(end of file),或算術運算式中除數為0等等,都可中止一個程序的執行 例外產生的傳遞(propagation) 例外產生時,沿著動態鏈(dynamic link)傳遞例外的情形給其他程序處理的過程

PL/1語言的例外處理 PL/1為最早提供例外處理的語言 PL/1語言的例外條件名稱 (1) AREA (2) ATTENTION (3) CHECK (4) CONDITION (5) CONVERSION (6) ENDFILE (7) ENDPAGE (8) ERROR (9) FINISH (10) FIXOVERFLOW

PL/1語言的例外處理 PL/1語言的例外條件名稱 (11) KEY (12) NAME (13) OVERFLOW (14) PENDING (15) RECORD (16) SIZE (17) STRINGRANGE (18) SUBSCRIPTRANGE (19) TRANSMIT (20) UNDEFINEDFILE (21) UNDERFLOW (22) ZERODIVIDE

PL/1語言的例外處理 當一程式執行時,上表所有條件必定是屬於下列二種情形之一 “enable” “disable” 在此情況下,當某條件被enable時,該狀況發生時,系統會產生中斷(interrupt)來中止程式的執行 “disable” 在此情況下,當某條件被disable時,就算該狀況發生了,系統也不會產生中斷來中止程式的執行

PL/1語言的例外處理 例外處理之語法為: “ON condition ON-unit”;其中,condition為例外情況,而ON-unit可為單一敘述或由“begin..end”所組成的區段 實際範例 ON OVERFLOW LIST('overflow occurs'): 表示當OVERFLOW情形發生時,系統會中斷程式的執行,並印出"Overflow occurs“ 此處 ON-unit 是單一敘述。 ON OVERFLOW begin ... end; 此處ON-unit是begin...end組成的區段

PL/1語言的例外處理 PL/1語言允許程式設計師自行定義例外情況 假設程式設計師自行定義了一個錯誤輸入的例外情形如下: ON ERROR_INPUT begin     list ("error-input");     stop; end; 產生錯誤輸入時,系統便會中止程式的執行並印出"error_input“ 如果要產生程式設計師自定的例外情形只要在condition前加“signal”即可 所以要產生錯誤輸入只需在程式中加入signal ERROR_INPUT即可

ADA語言的例外處理 例外 意義 Constraint_ Error 陣列註標或列舉式資料型態之值超過範圍 Numerical_ 結果值超過範圍 Program_Error 不允許程式呼叫動作 Storage_Error 儲存區空間不夠使用 Tasking_Error Task間連繫錯誤

ADA語言的例外處理 ADA語言允許程式設計師自行定義例外情況,如 ADA語言中例外發生的原因有二種 Overflow, Underflow : exception; ADA語言中例外發生的原因有二種 第一種是“不正常情況”,如: x:integer range 1..10; arr:array (1..10) of integer; a. x:=12; -- Constraint_Error b. x:=arr(15); -- Constraint_Error 第二種是執行"raise"敘述,如, raise Constraint_Error; 此時“Constraint_Error”會自動被啟動。

C++語言的例外處理 try try{ //可能產生例外之敘述 //一旦產生例外,會主動將程式控 制流程轉移 //到catch結構內 }

C++語言的例外處理 catch 用來處理例外情況,只要是try敘述中會產生的例外,都必須用catch結構中之敘述來處理;其語法結構如下: catch(例外名稱1){ //例外名稱1對應的處理敘述 } catch(例外名稱2){ //例外名稱2對應的處理敘述 } …………

C++語言的例外處理 throw 當try區塊中的程式段在執行過程中發生例外情況時,會利用throw敘述將該例外情況傳出try區塊

Java 語言的例外處理 try try是用來偵測例外發生用的,當某些敘述有可能發生例外時,必需用try敘述含括可能產生例外之敘述,如 try{     //可能產生例外之敘述     //一旦產生例外,會主動將程式控制流程轉移     //到後方之catch結構內之敘述 }

Java 語言的例外處理 catch 用來處理例外情況,只要是try敘述中會產生的例外,都必須用catch結構中之敘述來處理;其語法結構如下: catch(例外名稱1){ //例外名稱1對應的處理敘述 } catch(例外名稱2){ //例外名稱2對應的處理敘述 } …………

Java 語言的例外處理 finally 不論try結構中是否產生例外,finally結構中之敘述皆會被執行 介紹一個實際的範例如下: try {     //可能會產生例外的程式     } catch(例外名稱1){     //例外名稱1對應的處理敘述 } catch(例外名稱2){    //例外名稱2對應的處理敘述 } finally {     //一定會執行之程式 } 若以上的try結構中沒有例外情況產生,則直接執行finally結構中之敘述;若try結構中產生某種例外情況,先執行對應之catch敘述,再執行finally結構中之敘述

Java 語言的例外處理 throw與throws 介紹一個實際的範例如下: throw敘述可自行產生例外情況,當程式執行到throw敘述時,則會產生一個指定的例外。若method可能產生之例外不只一種,則將會產生之例外類別都寫在後面,並且以“,”隔開 介紹一個實際的範例如下: public void ExceptionExample() throws IOException, malformed VRL Exception;

精選習題 舉例說明Java語言程式,例外處理機制的運作情況。 舉例說明ADA語言程式,例外處理機制運作的情況。 舉例說明C++語言程式,例外處理機制運作的情況。 如果一程式語言擬提供例外處理之功能,舉出並說明其設計時該考慮之議題五項。