ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยKit Prateung ได้เปลี่ยน 10 ปีที่แล้ว
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……
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.