งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

การจัดการกับความผิดปกติ. หัวข้อ  ความผิดพลาด  ความผิดปกติ  การจัดการกับความผิดปกติ  การแจ้งว่าเกิดความผิดปกติ

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "การจัดการกับความผิดปกติ. หัวข้อ  ความผิดพลาด  ความผิดปกติ  การจัดการกับความผิดปกติ  การแจ้งว่าเกิดความผิดปกติ"— ใบสำเนางานนำเสนอ:

1 การจัดการกับความผิดปกติ

2 หัวข้อ  ความผิดพลาด  ความผิดปกติ  การจัดการกับความผิดปกติ  การแจ้งว่าเกิดความผิดปกติ

3 ความผิดพลาด

4  Syntax Error เขียนขึ้นผิดจากข้อกำหนดในภาษานั้น สามารถตรวจพบได้ง่าย ตั้งแต่ตอนคอมไพล์โปรแกรม  Logical Error เกิดจากความเข้าใจผิดของตัวผู้เขียนโปรแกรมเอง ความผิดพลาดลักษณะนี้จะตรวจพบได้ยาก เนื่องจากตัว ภาษาจะไม่แจ้งความผิดพลาดนั้นออกมา

5 Syntax Error public class SyntaxError { public static void main(String[] args) { int i; System.out.println(i); }

6 คอมไพล์ไม่ผ่าน

7 Logical Error public class LogicalError { public static void main(String[] args) { int i = ; System.out.println(i*2); }

8 ความผิดปกติ

9 ปัจจัยที่ไม่สามารถควบคุมได้  หน่วยความจำที่มีจำกัด  อุปกรณ์การรับและส่งข้อมูลที่อาจขัดข้อง  การกรอกข้อมูลที่ผิดพลาด

10 ตัวอย่างโปรแกรมที่เกิดความผิดปกติ public class ExceptionError { public static void main(String[] args) { int[] array = new int[3]; System.out.println(array[3]); }

11 ตัวอย่างโปรแกรมที่อาจจะเกิดความผิดปกติ public class ExceptionError { public static void main(String[] args) { String name = args[0]; System.out.println("Hello " + name); }

12 ความผิดปกติขณะทำงาน

13 การจัดการความผิดปกติในภาษา C  ตรวจสอบค่าที่ส่งคืน FILE *fp; fp = fopen(“mypic.jpg”, “r”); if (fp == NULL) { printf(“Cannot Open Image\n”); exit(0); }

14 ข้อเสีย  อาจละเลยการตรวจสอบได้ ภาษา C ไม่ได้บังคับว่าจะต้องมีการตรวจสอบความผิดปกติเช่นนี้ทุก ครั้ง โปรแกรมเมอร์ต้องตรวจสอบเอง  คำสั่งหลักอยู่ปนกับคำสั่งจัดการความผิดปกติ ใช้ if เพื่อดักจับความผิดปกติทุกครั้ง  ไม่สามารถระบุสาเหตุของความผิดปกติ ค่าที่คืนอาจเป็น NULL หรือตัวเลขติดลบ ไม่เพียงพอที่จะอธิบายถึงสาเหตุหลักของความผิดปกติได้

15 การจัดการความผิดปกติในภาษา Visual Basic  มีส่วนที่ใช้จัดการความผิดปกติ On Error GoTo LoadPicError MyImage.Picture = LoadPicture(“mypic.jpg”) Exit Sub LoadPicError: MsgBox(Err.Description)

16 ข้อเสีย  ตรวจสอบลำดับการทำงานตรวจสอบลำดับการทำงานได้ ยาก การใช้คำสั่ง GoTo เพื่อให้โปรแกรมข้ามการทำงานไปยังบริเวณที่ จัดการความผิดปกติ ทำให้โครงสร้างของโปรแกรมไม่เป็นระเบียบ มี ทางออกจากฟังก์ชันได้หลายทาง  จัดการความผิดปกติได้ยาก การจัดการความผิดปกติจะต้องระบุอยู่เฉพาะในฟังก์ชันนั้นๆ เท่านั้น ไม่สามารถส่งให้ผู้เรียกใช้ฟังก์ชันนั้นตัดสินใจได้เองว่าจะจัดการกับ ความผิดปกติอย่างไร

17 การจัดการความผิดปกติในภาษา Java  รูปแบบ try { ประโยคทำงานที่อาจเกิดความผิดปกติ; } catch (วัตถุException) { ประโยคที่ใช้จัดการความผิดปกติ; } try catch

18 ไม่จัดการความผิดปกติ import java.util.Scanner; public class NoTryCatch { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); int i = Integer.parseInt(str); System.out.println(i); }

19 ผลการทำงาน  เมื่อป้อนค่า  เมื่อป้อนค่า 10.5 Exception in thread "main" java.lang.NumberFormatException: For input string: "10.5" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:456) at java.lang.Integer.parseInt(Integer.java:497) at NoTryCatch.main(NoTryCatch.java:8)

20 จัดการความผิดปกติด้วย try-catch Scanner sc = new Scanner(System.in); String str = sc.next(); int i = 0; try { i = Integer.parseInt(str); } catch (Exception e) { System.out.println("Catch exception"); } System.out.println(i);

21 ผลการทำงาน  เมื่อป้อนค่า  เมื่อป้อนค่า 10.5 Catch exception 0

22 การจัดการความผิดปกติตามชนิด  รูปแบบ try { ประโยคทำงานที่อาจเกิดความผิดปกติ; } catch (วัตถุ Exception ชนิดที่ 1) { ประโยคที่ใช้จัดการความผิดปกติชนิดที่ 1; } catch (วัตถุ Exception ชนิดที่ 2) { ประโยคที่ใช้จัดการความผิดปกติชนิดที่ 2; } try catch

23 การจัดการความผิดปกติตามชนิด try { i = Integer.parseInt(str); } catch (NumberFormatException e) { System.out.println("Catch number format exception"); } catch (Exception e) { System.out.println("Catch exception"); } System.out.println(i);

24 ผลการทำงาน  เมื่อป้อนค่า  เมื่อป้อนค่า 10.5 Catch number format exception 0

25 finally  รูปแบบ try { ประโยคสำหรับจองทรัพยากร; ประโยคทำงานที่อาจเกิดความผิดปกติ; } catch (วัตถุ Exception) { ประโยคที่ใช้จัดการความผิดปกติ; } finally { ประโยคสำหรับการคืนทรัพยากร; } try catch finally

26 เหตุการณ์ปรกติ int[] array = {10,20,30}; int count = array.length; java.io.PrintWriter writer = null; try{ writer = new java.io.PrintWriter("c:\\Temp\\test.txt"); for( int i = 0; i < count; i++) writer.println(array[i]); }

27 เปิดไฟล์ไม่ได้ int[] array = {10,20,30}; int count = array.length; java.io.PrintWriter writer = null; try{ writer = new java.io.PrintWriter("c:\\TTTT\\test.txt"); for( int i = 0; i < count; i++) writer.println(array[i]); }

28 อ้างเกินขอบเขต int[] array = {10,20,30}; int count = array.length + 1; java.io.PrintWriter writer = null; try{ writer = new java.io.PrintWriter("c:\\Temp\\test.txt"); for( int i = 0; i < count; i++) writer.println(array[i]); }

29 โค้ดซ้ำซ้อน int[] array = {10,20,30}; int count = array.length; java.io.PrintWriter writer = null; try{ writer = new java.io.PrintWriter("c:\\Temp\\test.txt"); for( int i = 0; i < count; i++) writer.println(array[i]); if( writer == null) System.out.println("Cannot open file for write!"); else writer.close(); }

30 โค้ดซ้ำซ้อน catch(IndexOutOfBoundsException e) { System.out.print("Catch index out of bounds exception "); System.out.println(e); if( writer == null) System.out.println("Cannot open file for write!"); else writer.close(); } catch(IOException e) { System.out.print("Catch io exception "); System.out.println(e); if( writer == null) System.out.println("Cannot open file for write!"); else writer.close(); }

31 ใช้ finally เพื่อกำจัดโค้ดซ้ำซ้อน int[] array = {10,20,30}; int count = array.length; java.io.PrintWriter writer = null; try{ writer = new java.io.PrintWriter("c:\\Temp\\test.txt"); for( int i = 0; i < count; i++) writer.println(array[i]); }

32 ใช้ finally เพื่อกำจัดโค้ดซ้ำซ้อน catch(IndexOutOfBoundsException e) { System.out.print("Catch index out of bounds exception "); System.out.println(e); } catch(IOException e) { System.out.print("Catch io exception "); System.out.println(e); } finally{ if( writer == null) { System.out.println("Cannot open file for write!"); } else { writer.close(); }

33 ประเภทของความผิดปกติ

34  ไม่ต้องตรวจสอบ  ต้องตรวจสอบ ต้องอยู่ใน try-catch

35 ความผิดปกติที่ไม่ต้องตรวจสอบ  ไม่ต้องตรวจเพราะส่วนใหญ่เกิดจากความผิดพลาด ในการเขียนโปรแกรม  เช่น NumberFormatException IndexOutOfBoundsException NullPointerException IllegalArgumentException  มี RuntimeException เป็นคลาสแม่

36 ความผิดปกติที่ต้องตรวจสอบ  ต้องตรวจเพราะอาจจะเกิดความผิดปกติเมื่อนำ โปรแกรมไปรัน  ต้องอยู่ใน try-catch เสมอ  เช่น IOException FileNotFoundException

37 การแจ้งว่าเกิดความผิดปกติ

38  รูปแบบ throw วัตถุ_exception;  ตัวอย่าง Exception e = new Exception("Negative Number"); if (i < 0) throw e; หรือ if (i < 0) throw new Exception("Negative Number");

39 การแจ้งว่าเกิดความผิดปกติ try { i = Integer.parseInt(str); if (i < 0) { throw new Exception(); } } catch (NumberFormatException e) { System.out.println("Catch number format exception"); } catch (Exception e) { System.out.println("Catch exception"); }

40 ผลการทำงาน  เมื่อป้อนค่า  เมื่อป้อนค่า 10.5 Catch number format exception 0  เมื่อป้อนค่า -10 Catch exception -10

41 สรุป

42  การจัดการความผิดปกติเป็นการแก้ไขความผิดพลาดต่าง ๆ ที่เกิดจากปัจจัยภายนอกซึ่งไม่สามารถควบคุมได้  โปรแกรมภาษา C ต้องตรวจสอบความผิดปกติเองทุกครั้ง  โปรแกรมภาษา Visual Basic ถึงแม้จะสามารถแยกส่วนการ จัดการความผิดปกติออกจากส่วนของโปรแกรมหลัก  โปรแกรมภาษา Java มีรูปแบบการจัดการความผิดปกติด้วย try-catch-finally block

43 สรุป  คำสั่งที่อาจเกิดความผิดปกติจะไว้ในส่วนของ try  คำสั่งที่จัดการความผิดปกติจะไว้ในส่วนของ catch  การดักจับความผิดปกติด้วย catch นั้น สามารถดักจับแยก ตามชนิดของความผิดปกติได้  ส่วนของ finally จะถูกเรียกใช้ทุกครั้งไม่ว่าจะเกิดหรือไม่เกิด ความผิดปกติ โดยปกติจะบรรจุเขียนคำสั่งที่คืนทรัพยากร  คำสั่ง throws มีไว้เพื่อโยนความผิดปกติที่เกิดขึ้นไปให้กับผู้ ที่เรียกใช้เมธอดนี้ ทำให้มีทางเลือกในการจัดการกับความ ผิดปกติมากขึ้น


ดาวน์โหลด ppt การจัดการกับความผิดปกติ. หัวข้อ  ความผิดพลาด  ความผิดปกติ  การจัดการกับความผิดปกติ  การแจ้งว่าเกิดความผิดปกติ

งานนำเสนอที่คล้ายกัน


Ads by Google