Chapter 5 การจัดการข้อผิดพลาด (Exception Handling)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา JAVA
Advertisements

The InetAddress Class.
การจัดการความผิดพลาด
File.
05_3_Constructor.
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
หลักการเชิงวัตถุ อาจารย์ศิริพร ศักดิ์บุญญารัตน์
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Network programming Asst. Prof. Dr. Choopan Rattanapoka
LOGO Array. ประเภทของ Array - อาเรย์ 1 มิติ (One) - อาเรย์ 2 มิติ (Two) - อาเรย์ 3 มิติ (Three) 2.
บทที่ 3 Class and Object (1) การสร้างและการใช้งานคลาส
คลาสและวัตถุ (2) (Class & Object)
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ
คลาสและวัตถุ (3) (Class & Object)
คลาสและวัตถุ (2) (Class & Object)
คลาสและวัตถุ (3) (Class & Object). w5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 24, 25 as5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 23 2.
บทที่ 4 Method (1).
File I/O (1) โปรแกรมจะอ่านหรือเขียนข้อมูลผ่านท่อส่งข้อมูล (Stream)
Inheritance การสืบทอดคลาส
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
อาร์เรย์ หรือแถวลำดับ (Array)
input from keyboard มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 3 มิถุนายน 2550 Method of Class มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 7 มิถุนายน 2556 Text File Processing มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 22 มิถุนายน 2550 ความผิดพลาดที่พบ บ่อย มหาวิทยาลัยเนชั่น.
บทที่ 6 เมธอด.
ทำงานกับ File และStream
Handling Exceptions & database
โครงสร้างควบคุมการทำงาน
คำสั่งควบคุมการ ทำงาน การเขียนโปรแกรมโดยปกติ มีทั้งให้ทำงาน เป็นลำดับ ที่ละคำสั่ง บางครั้งมีการให้เปลี่ยน ลำดับในการทำคำสั่ง เพื่อให้การเขียน โปรแกรมมีประสิทธิภาพสูงสุด.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
The ServerSocket Class ใช้ในการจัดทำเครื่องที่เป็นการบริการ ใช้ในการจัดทำเครื่องที่เป็นการบริการ โดยจะมี ช่วงชีวิตดังนี้ โดยจะมี ช่วงชีวิตดังนี้
Object Oriented Programming Handling Exceptions
Method of Class อ.สุพจน์ สิงหัษฐิต
Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai
Lecture 7 Java Exceptions. Errors  Compile-time Errors  เกิดขึ้นระหว่าง compile ตรวจสอบได้ด้วย Compiler  เช่น ผิดหลักไวยากรณ์  Run-time Error  เกิดขึ้นระหว่างประมวลผล.
บทที่ 3 Class and Object (2).
บทที่ 4 คำสั่งควบคุมแบบมีทางเลือก
Java Programming Java Structure and Datatype,Variable
Java Network Programming 1
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
TECH30201 Object-Oriented Programming
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
การจัดการกับความผิดปกติ
Variable, Data type, Expression, Operators Data input, Data output
Chapter 6 Abstract Class and Interface
การเขียนโปรแกรมบนมาตรฐานเปิด โครงสร้างโปรแกรม public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello World”);
Computer Programming I โดย อ.วิมลศรี เกตุโสภณ สาขาวิชาระบบสารสนเทศ
Object and classes.
การประมวลผลแบบวน ( LOOP )
การติดต่อกับฐานข้อมูล(MySQL)
Basic Elements of Java&WorkShops
WEEK5-2: 14 SEP 2017 Input / Output Selection Statement
อินเตอร์เฟส (Interface)
Handling Exceptions & database
Basic Java Programming
Inheritance and Method Overriding
พื้นฐานโปรแกรมภาษาจาวา (Overview of Java Programming Language)
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
Creating And Using Exceptions
Object-Oriented Programming Paradigm
Starting JAVA : JAVA PROGRAMMING (การ โปรแกรมภาษาจาวา) มัลลิกา เกลี้ยงเคล้า | SC1419.
Java Translation Object and Class ในมุมมองคอมพิวเตอร์ Objects หรือ Instances หมายถึงวัตถุที่กำเนิดตัวตนจริงๆจากต้นแบบที่กำหนดโดยคลาส Object.
Method and Encapsulation
Inheritance and Encapsulation
Chapter 10 Exception Handling
Class Inheritance and Interfaces.
ใบสำเนางานนำเสนอ:

Chapter 5 การจัดการข้อผิดพลาด (Exception Handling)

รู้จักการจัดการความผิดพลาดและคลาส ตัวอย่างข้อผิดพลาดที่อาจทำให้การทำงานของ โปรแกรมล้มเหลว เช่น การหารด้วยศูนย์ การเข้าถึงข้อมูลอาร์เรย์ในตำแหน่ง ที่ไม่มีอยู่จริง หรือการป้อนข้อมูลผิดประเภท เป็นต้น การแก้ไขปัญหาสามารถทำได้หลายวิธี เช่น การตรวจสอบข้อผิดพลาดด้วยคำสั่ง If – else ภาษา Java จะมีกลไกในการดักจับด้วยการโยน (Throw) เมื่อตรวจพบความผิดพลาดที่เกิดขึ้นในขณะที่ โปรแกรมทำงาน ให้กับส่วนของชุดคำสั่งที่ทำหน้าที่ดังกล่าว โดยใช้ งานคลาส Exception

ความแตกต่างระหว่าง Error กับ Exception Error คือ ความผิดพลาดที่อาจจะเกิดจาก Syntax Error สามารถตรวจพบได้ง่ายตั้งแต่ตอนคอมไพล์ โปรแกรม หรือเกิดจาก Logical Error ที่ใช้ตรรกะใน ชุดคำสั่งไม่ถูกต้อง ซึ่งตรวจพบได้ยาก Exception คือ ข้อผิดพลาดหรือข้อยกเว้นที่ อาจเกิดจาก การหารด้วยศูนย์ การเปิดไฟล์ที่ไม่มีอยู่จริง การกรอกข้อมูลที่ผิดพลาด

ประเภทของ Exception Exception คำอธิบาย AWTException มีปัญหาเกิดขึ้นใน Class ของแพคเกจ “java.awt” ArithmeticException(java.lang) เกิดความผิดพลาดในการคำนวณ เช่น การหารด้วยค่า 0 ArrayIndexOutOfBoundsException(java.lang) ระบุตัวเลขเกินขอบเขตอง Array ที่กำหนดไว้ ArrayStoreException(java.lang) ใส่ค่าที่ไม่ตรงกับชนิดของข้อมูลที่นิยามไว้ใน Array BindException(java.net) ไม่สามารถเชื่อมต่อ (Bound) Socket เข้ากับ Local Address และ Port ได้ ClassCastException(java.lang) แปลงชนิดข้อมูล (Cast) ไม่ตรงกัน ClassNotFoundException(java.lang) หา Class หรือ Interface ที่ระบุไม่เจอ EOFException(java.io) พบรหัส End of file ก่อนจบการทำงานของโปรแกรมตามปกติ FileNotFoundException(java.io) ไม่พบชื่อ File ที่ระบุ IOException(java.io) I/O Operation ไม่สามารถทำงานได้เสร็จสมบูรณ์ RuntimeException(java.lang) Superclass ของ ทุก ๆ Unchecked Runtime Exceptions

ประเภทของ Error Error คำอธิบาย AWTError(java.awt) Error ทั่วไปที่พบ ซึ่งแสดงว่า เกิดปัญหาขึ้นกับ Package ชื่อ “java.awt” ClassFormatError Format ของ Bytecode ใน Class File มีปัญหา Error(java.lang) Root ของ Error Hierarchy ExceptionInInitializerError(java.lang) เกิด Exception ขึ้นใน Static Initializer IllegalAccessError(java.lang) มีการเรียกใช้ Class, Method หรือ Varible ที่ไม่สามารถใช้ได้ IncompatibleClassChangeError(java.lang) มี Operation ที่ไม่ถูกต้องเกิดขึ้นกับ Class InstantiationError(java.lang) มีการ Initialize Abstract Class หรือ Interface InternalError(java.lang) เกิดปัญหาขึ้นกับ Interpreter NoClassDefFoundError(java.lang) ไม่พบนิยามของ Class ที่ระบุ NoSuchFieldError(java.lang) ไม่พบ Field ที่ระบุ NoSuchMethodError(java.lang) ไม่พบ Method ที่ระบุ

ประเภทของ Exception RuntimeException เป็นข้อผิดพลาดที่ หลีกเลี่ยงได้หากเขียนโปรแกรมถูกต้อง เช่น ArrayIndexOutOfBoundException เป็น ความผิดพลาดที่เกิดจากการอ้างถึงสมาชิก ภายในอาร์เรย์ไม่ถูกต้อง เช่น การอ้าง ถึงสมาชิกในอาร์เรย์ในตำแหน่งที่มากกว่า สมาชิกของอาร์เรย์ที่กำหนด ArithmeticException เป็นความผิดพลาด ที่เกิดจากการดำเนินการทางคณิตศาสตร์ เช่น การหารจำนวนเต็มด้วย 0

ประเภทของ Exception NullPointerException เป็นข้อผิดพลาดที่เกิดการ อ้างถึงค่าที่เป็น Null เช่น การเรียกใช้ออบเจกต์ที่ ยังไม่ได้ถูกสร้าง คือค่าออบเจ็กต์เป็น Null IOException เป็นข้อผิดพลาดที่ภาษา Java กำหนดให้ต้องมีการจัดการ หากมีการเรียกใช้ เมธอดที่อาจเกิดข้อผิดพลาดประเภทนี้ได้ เช่น EOFException เป็นความผิดพลาดที่เกิดจากการ ระบุจุดสิ้นสุดของไฟล์ไม่ถูกต้อง FileNotFoundException เป็นความผิดพลาดที่ เกิดจากการไม่พบไฟล์ที่ต้องการ

การจัดการข้อผิดพลาดด้วย Exception มีคำสั่งให้ใช้งาน 2 คำสั่ง คือ คำสั่ง try … catch และ throws การใช้งานคำสั่ง try … catch เป็นการจัดการ Exception ที่มีหลักการทำงาน คล้ายกับคำสั่ง if statement คือ ถ้าเกิดข้อผิดพลาดในคำสั่งที่ตามหลังคำสั่ง try โปรแกรมจะตรวจสอบคำสั่ง Catch ว่าเป็น ข้อผิดพลาดประเภทใด และทำงานที่ชุดคำสั่ง หลังคำสั่ง Catch ที่ตรงกับข้อผิดพลาด มี รูปแบบการใช้งาน ดังนี้

การจัดการข้อผิดพลาดด้วย Exception โดยที่ statements เป็นชุดคำสั่งที่ต้องการดักจับ ข้อผิดพลาด TheException e เป็นประเภทของ Exception ที่ต้องการดักจับ statements_n เป็นชุดคำสั่งที่กำหนดให้ทำงานเมื่อ ข้อผิดพลาดตรงตาม Exception ซึ่งดัก จับข้อผิดพลาดได้มากกว่า 1 ประเภท finalStatements เป็นชุดคำสั่งที่ทำงานปกติไม่ว่าจะมี exception เกิดขึ้นหรือไม่ try { [statements] } catch (TheException e) { [statements_n] finally { [finalStatements]

โปรแกรมจัดการข้อผิดพลาดจากการหารด้วยศูนย์ และการป้อนข้อมูลผิดประเภท โปรแกรมจัดการข้อผิดพลาดจากการหารด้วยศูนย์ และการป้อนข้อมูลผิดประเภท

โปรแกรมจัดการข้อผิดพลาดจากการหารด้วยศูนย์ และการป้อนข้อมูลผิดประเภท โปรแกรมจัดการข้อผิดพลาดจากการหารด้วยศูนย์ และการป้อนข้อมูลผิดประเภท

โปรแกรมจัดการข้อผิดพลาดจากการเข้าถึงอาร์เรย์ ในตำแหน่งที่ไม่มีอยู่จริง

โปรแกรมจัดการข้อผิดพลาดจากการเปิดไฟล์ ไม่มีอยู่จริง

โปรแกรมจัดการข้อผิดพลาดจากการเปิดไฟล์ ไม่มีอยู่จริง

การใช้งานคำสั่ง throws เป็นคำสั่งส่งข้อผิดพลาดออกไป มีรูปแบบการใช้งาน ดังนี้ [modifier] return_type MethodName([parameter]) throws ExceptionType1 [,ExceptionType2] { [statements] return varValue; }

การใช้งานคำสั่ง throws โดยที่ modifier เป็นคีย์เวิร์ดที่กำหนดคุณสมบัติการ เข้าถึงเมธอด return_type เป็นชนิดของข้อมูลที่เมธอดจะส่งค่า กลับ MethodName เป็นชื่อเมธอด parameter เป็นชุดตัวแปรที่ใช้ในการรับข้อมูล ExceptionType1, ExceptionType2, เป็นประเภทของ ข้อผิดพลาดที่ต้องการตรวจจับ statements เป็นชุดคำสั่งกำหนดการทำงานของเมธ อด varValue เป็นค่าที่ต้องการส่งค่ากลับ การใช้คำสั่ง throws จะส่งต่อข้อผิดพลาดไปเรื่อยๆ โดย เมธ อด main() จะเป็นเมธอดสุดท้าย ที่ใช้คำสั่ง throws

การสร้างและใช้งาน Exception ที่สร้างขึ้นเอง ซึ่งมี constructor 2 แบบ คือ public Exception() public Exception(String s) เมื่อเกิดข้อผิดพลาดขึ้นในคำสั่งใด เมธอดที่ ต้องการส่งออบเจ็กต์ประเภท Exception จะต้องเรียกใช้ คำสั่งที่ชื่อ throws เพื่อจะ สร้างออบเจ็กต์ของคลาสประเภท Exception ขึ้นมา และเมธอดนั้นจะต้องมีคำสั่ง throws เพื่อให้เมธอดที่เรียกใช้ เมธอดนี้จัดการข้อผิดพลาดที่เกิดขึ้น

โปรแกรมจัดการข้อผิดพลาด โดยใช้ Exception ที่สร้างขึ้นเอง import java.util.Scanner; class OutOfRangeException extends Exception { void checkvalue(int value, int MIN, int MAX) throws OutOfRangeException { if (value < MIN || value > MAX){ throw new OutOfRangeException(); } }

โปรแกรมจัดการข้อผิดพลาด โดยใช้ Exception ที่สร้างขึ้นเอง public class CreatingExceptions { public static void main (String[] args) { OutOfRangeException x =new OutOfRangeException(); final int MIN = 0, MAX = 30; int value=0; try { Scanner scan = new Scanner (System.in); System.out.print ("Enter Score: "); value = scan.nextInt(); x.checkvalue(value,MIN,MAX); }

โปรแกรมจัดการข้อผิดพลาด โดยใช้ Exception ที่สร้างขึ้นเอง catch (OutOfRangeException e){ System.out.println(e + "\nหมายถึง \"ข้อผิดพลาดที่เกิดจากค่า ข้อมูลคะแนนเกินขอบเขต\""); System.exit(0); } catch (Exception e) { System.out.println(e + "\nหมายถึง \"ข้อผิดพลาดที่เกิดจากการ ป้อนข้อมูลเข้าผิดประเภท\""); finally { System.out.println("คะแนนคือ " + value*100.0f/MAX +"%");

โปรแกรมจัดการข้อผิดพลาด โดยใช้ Exception ที่สร้างขึ้นเอง

Reference ผศ.สุดา เธียรมนตรี, คู่มือเรียนเขียน โปรแกรมภาษา Java .บริษัท ไอดีซี พรีเมียร์ จำกัด .กรุงเทพฯ: 2555.