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

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

Lecture 7 Java Exceptions. Errors  Compile-time Errors  เกิดขึ้นระหว่าง compile ตรวจสอบได้ด้วย Compiler  เช่น ผิดหลักไวยากรณ์  Run-time Error  เกิดขึ้นระหว่างประมวลผล.

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


งานนำเสนอเรื่อง: "Lecture 7 Java Exceptions. Errors  Compile-time Errors  เกิดขึ้นระหว่าง compile ตรวจสอบได้ด้วย Compiler  เช่น ผิดหลักไวยากรณ์  Run-time Error  เกิดขึ้นระหว่างประมวลผล."— ใบสำเนางานนำเสนอ:

1 Lecture 7 Java Exceptions

2 Errors  Compile-time Errors  เกิดขึ้นระหว่าง compile ตรวจสอบได้ด้วย Compiler  เช่น ผิดหลักไวยากรณ์  Run-time Error  เกิดขึ้นระหว่างประมวลผล (run)  เช่น Divide by zero, การอ้างอิง array ที่ “out of bounds”, อ้างอิง “null pointer”  จะรู้ได้อย่างไรว่าเกิด Run-time Errors?

3 Handling Run-time Errors  เมื่อเกิด Run-time Error เราอาจ  หยุดการประมวลผลส่วน Source code ปัจจุบัน  jump ไปยังส่วนของ Source code ที่เป็น Error Handling Routine  จัดการ Errors  ทำงานต่อ หรือ หยุดการทำงาน  เมื่อเกิด Run-time Error ต้อง Interrupt การ ควบคุมการทำงานปกติ

4 Exceptions  Exception กำหนด “mild” Error Condition  Exceptions เกิดขึ้นเมื่อ  ไม่มีไฟล์ที่ต้องการเปิด  การเชื่อมต่อ Network สะดุด  Operands ที่เรียกใช้อยู่นอกขอบเขตที่ กำหนด  ไม่มีไฟล์คลาสที่ต้องการ load  …  คลาส Error กำหนด “Serious” Error Condition

5 Exception Example public class HelloWorld { public static void main(String args[]) { int i=0; String greeting[] = { "Hello world!", "No, I mean it!", "HELLO WORLD!!!” }; while (i<4) { System.out.println(greeting[i]); i++; } System.out.println("End of program."); } > java HelloWorld Hello world! No, I mean it! HELLO WORLD!!! java.lang.ArrayIndexOutOfBoundsException: 3 at HelloWorld.main(HelloWorld.java:10) >

6 Handling Exception in Java  ใช้ในการตรวจจับ Error ก่อนที่จะเกิดขึ้น  ทำได้ 2 วิธี  การใช้ประโยค try-catch-finally กำหนด ส่วนของ source code ที่ต้องการให้จัดการ Exceptions  การใช้ประโยค throws ในการโยน (throw) การ Exceptions ไปให้กับ method ที่เป็นคนเรียกใช้งานให้ทำการจัดการ Exceptions

7 “try” and “catch” statement try { // code that might throw a particular exception … } catch (ExceptionType otherException) { // code to execute if a general is thrown … }  Exception ถูกตรวจจับได้โดยการระบุ catch( ) block  อาจมีได้หลาย catch( ) block  ถ้าไม่มีการ thrown Exception การทำงานใน ส่วนของ catch block จะถูกข้ามไป ไม่ทำงาน

8 Exception Example public class HelloWorld { public static void main(String args[]) { int i=0; String greeting[] = { "Hello world!", "No, I mean it!", "HELLO WORLD!!!” }; try { while (i<4) { System.out.println(greeting[i]); i++; } } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Index Out Of Bound!!!"); } System.out.println("End of program."); }

9 Output of Exception Example > java HelloWorld Hello world! No, I mean it! HELLO WORLD!!! Index Out Of Bound!!! End of program. >

10 “finally” statement try { // code that might throw a particular exception … } catch (ExceptionType otherException) { // code to execute if a general is thrown … } finally { // always execute this following code … }  ส่วนของ Code ใน finally จะถูกประมวลผล เสมอ ไม่ว่าจะเกิด Exception ในส่วนของ try- catch หรือไม่ก็ตาม

11 Exception Example : try { while (i<4) { System.out.println(greeting[i]); i++; } } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Index Out Of Bound!!!"); System.out.println("Re-setting Index value"); i=0; } finally { System.out.println("This is always printed!."); } :

12 Output of Exception Example > java HelloWorld Hello world! No, I mean it! HELLO WORLD!!! Index Out Of Bound!!! Re-setting Index value This is always printed!. >

13 Another Exception Example : try { startFaucet(); waterLawn(); } catch (BrokenPipeException e) { logProblem(); } finally { stopFaucet() } :

14 Exception Categories Throwable Error Exception Virtual Machine Error Virtual Machine Error AWTError RuntimeException IOException FileNotFoundException EOFException ArrayIndexedOutofBound ArithemeticException NullPointerException StackOverFlowErrpr OutOfMemoryErrpr : : :

15 Common Exceptions  ArithmeticException  NullPointerException  NegativeArrayException  ArrayIndexOutOfBoundsException  SecurityException

16 Call Stack Mechanism  กรณี current block ที่ Exception ไม่ จัดการ try-catch block นั้น Exceptions จะถูกโยน (throw) ต่อไปยังเมทธอดที่ เรียกใช้งานส่วนของ try-catch block ได้  กรณี Exception จะถูกโยน (throw) ไป ให้เมทธอด main() และ เมทธอด main() ไม่มีการจัดการ try-catch block โปรแกรม จะสิ้นสุดการทำงานทันที

17 “throws” clause : public void methodA() throws IOException { // do something crunchching... }… : try { // code to execute methodsA(); …. } catch (IOException e) { // do sometihing … }

18 “throws” clause example public class TestA() { public void methodA() throws RuntimeException { // do some number crunchching } public class TestB1() extends TestA { public void methodA() throws ArithmeticException { // do some numbercrunchching } public class TestB2() extends TestA { // fail to compile > why? public void methodA() throws Exception { // do some number crunchching }

19 “throws” clause example import java.io.*; public class TestMultiA() { public void methodA() throws IOException, RuntimeException { // do some IO stuff } import java.io.*; public class TestMultiB1() extends TestMultiA { public void methodA() throws FileNotFoundException, UTFDataFormatException, ArigthmethicException { // do some IO and number crunchching stuff }

20 “throws” clause example import java.io.*; public class TestMultiB2() extends TestMultiA { public void methodA() throws FileNotFoundException { // do some IO and number crunchching stuff }

21 Creating your own Exceptions public class ServerTimedOutException () extends Exception { private int port; public ServerTimedOutException(String message, int port) { super(message); this.port = port; } public int getPort() { return port; } // use getMessage method to get the reason the exception was made }

22 Example public void connectMe (String serverName) { int success; int portToConnect = 80; success = open(serverName, portToConnect); if (success == -1) { throw new ServerTimedOutException(“Could not connect”, portToConnect); } public void findServer() { try { connectMe (defaultServer); } catch (ServerTimedOutException e) { System.out.println(“Error : ” + e.getMessage() + “ connecting to port ” + e.getPort()); }

23 Using prinStackTrace  คลาส Throwable  เป็น superclass ของทุก Exceptions  เมทธอด printStackTrace( )  เรียก Stack สำหรับจัดการ Exception โดย เมทธอดล่าสุดที่เกิด Exception จะอยู่บน top ของ Stack  ใช้สำหรับ testing และ debuging

24 Using prinStackTrace Example 1 public class UsingExceptions { 2 public static void main(String args[]) { 3 try { 4 method1(); 5 } catch (Exception e) { e.printStackTrace( ); } 6 } 7 public static void method1() throws Exception { 8 method2(); 9 } 10 public static void method2() throws Exception { 11 method3(); 12 } 13 public static void method3() throws Exception { 14 throw new Exception(”Exception thrown in method3") ; 15 } 16 }

25 Output of Using printStackTrace Example > java UsingExceptions java.lang.Exception: Exception thrown in method3 at UsingExceptions.method3(UsingExceptions.java:14) at UsingExceptions.method2(UsingExceptions.java:11) at UsingExceptions.method1(UsingExceptions.java:8) at UsingExceptions.main(UsingExceptions.java:4) >

26 Thank you……


ดาวน์โหลด ppt Lecture 7 Java Exceptions. Errors  Compile-time Errors  เกิดขึ้นระหว่าง compile ตรวจสอบได้ด้วย Compiler  เช่น ผิดหลักไวยากรณ์  Run-time Error  เกิดขึ้นระหว่างประมวลผล.

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


Ads by Google