การโปรแกรมเชิงวัตถุดวยภาษา JAVA ้ Exception มหาวิทยาลัยเนชัน ่ http://www.nation.ac.th http://www.thaiall.com/class บุรน ิ ทร ์ รุจจนพันธุ ์ . ความหมาย Exception เป็ นชือ ่ คลาสอยูใน ่ package java.lang คลาสนี้ใช้ตรวจจับขอผิ ้ ดพลาดของโปรแกรม และดาเนินการกับเหตุการณที ่ ก ั ไมปกติ ในแบบ ่ ์ ม ขอยกเว น ้ ้ เช่น - ผลการดาเนินการทางคณิตศาสตรที ่ ลอยให ่ ้มีการ ์ ป หารดวย้ - การเรียกใช้อารเรย ่ าหนด index นอกขอบเขต ์

Download Report

Transcript การโปรแกรมเชิงวัตถุดวยภาษา JAVA ้ Exception มหาวิทยาลัยเนชัน ่ http://www.nation.ac.th http://www.thaiall.com/class บุรน ิ ทร ์ รุจจนพันธุ ์ . ความหมาย Exception เป็ นชือ ่ คลาสอยูใน ่ package java.lang คลาสนี้ใช้ตรวจจับขอผิ ้ ดพลาดของโปรแกรม และดาเนินการกับเหตุการณที ่ ก ั ไมปกติ ในแบบ ่ ์ ม ขอยกเว น ้ ้ เช่น - ผลการดาเนินการทางคณิตศาสตรที ่ ลอยให ่ ้มีการ ์ ป หารดวย้ - การเรียกใช้อารเรย ่ าหนด index นอกขอบเขต ์

การโปรแกรมเชิงวัตถุด ้วยภาษา JAVA
Exception
่ั
มหาวิทยาลัยเนชน
http://www.nation.ac.th
http://www.thaiall.com/class
บุรน
ิ ทร ์ รุจจนพันธุ ์ .
ปร ับปรุง 6 มิถุนายน
2556
ความหมาย
่
Exception เป็ นชือคลาสอยู
ใ่ น
package java.lang
้ ้ตรวจจับข ้อผิดพลาดของโปรแกรม
คลาสนี ใช
และดาเนิ นการกับเหตุการณ์ทมั
ี่ กไม่ปกติ ในแบบข ้อยกเว ้น
เช่น
่ อยให ้มีการหาร
- ผลการดาเนิ นการทางคณิ ตศาสตร ์ทีปล่
ด ้วย 0
่ าหนด index นอกขอบเขตที่
- การเรียกใช ้อาร ์เรย ์ ทีก
อาร ์เรย ์เก็บไว ้
มีคาสาคัญ 4 คา คือ try, catch, throw, finally
http://www.thaiall.com/class
แบบไม่ตรวจจับ
class x {
public static void main(String[] args) {
System.out.println(1/0);
}
}
Exception in thread "main"
java.lang.ArithmeticException: / by zero
at x.main(x.java:3)
http://www.thaiall.com/class
ตรวจจับแบบคลุมหมด
class x {
public static void main(String[] args) {
try {
System.out.println(1/0);
}
catch (Exception e) {
System.out.println(e);
}
// java.lang.ArithmeticException: / by zero
}
}
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/E
http://www.thaiall.com/class
ตรวจจับเฉพาะ
ArithmeticException
public
static void main(String[] args) {
class x {
try {
System.out.println(1/0);
}
catch (ArithmeticException e) {
System.out.println(e);
}
// java.lang.ArithmeticException: / by zero
}
}
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/A
rithmeticException.html
http://www.thaiall.com/class
การใช ้ throw
class x {
public static void main(String[] args) {
try {
int i = 0;
if(i == 0){throw new Exception("nothing");}
// unreachable "hello"
System.out.println("hello");
System.out.println(1/i);
}catch(Exception e) {System.out.println(e);}
}
// java.lang.Exception: nothing
}
http://www.thaiall.com/class
การใช ้ finally
class x {
public static void main(String[] args) {
try {
System.out.println(1);
System.out.println(1/0);
System.out.println(2);
}
catch (Exception e) { System.out.println(e); }
finally { System.out.println("printed both catch
and not catch"); }
}}
// 1
// java.lang.ArithmeticException: / by zero
// printed both catch and not catch
http://www.thaiall.com/class
การใช ้ throws
class x {
public static void main(String[] args) {
y z = new y();
try { z.yy(); }
catch (Exception e) {System.out.print(e);}
}}
class y {
public static void yy() throws Exception {
System.out.println(1);
System.out.println(1/0);
System.out.println(2);
}}
// 1
// java.lang.ArithmeticException: / by zero
http://www.thaiall.com/class
3 Catch with order of level
class x {
public static void main(String[] args) {
try { System.out.println(1/0); }
catch (ArithmeticException e) {System.out.print(e);}
catch (ArrayIndexOutOfBoundsException e) {System.out.print(e);}
catch (IndexOutOfBoundsException e) { System.out.print(e); }
catch (RuntimeException e) { System.out.print(e); }
catch (Exception e) { System.out.print(e); }
}}
บรรทัดสีน้ าเงิน ไม่ขนต่
ึ ้ อกัน แต่อยู ่ภายใต้ Java.lang.Exception
้ อก ัน เพราะ IndexOutOfBoundsException อยู ่ใน
บรรทัดสีเขียว ขึนต่
RuntimeException แล้ว
ถ้าจับ RuntimeException ก็จะจับ IndexOutOfBoundsException
ไปด้วย
จับตามลาดับ ถ้ามี Exception ต้องไปอยู ่รายการสุดท้ายของการจับ
้
จ ับซาไม่
ได้ จ ับได้รอบเดียวแต่ละการจบ
ั
http://www.thaiall.com/class
ระดับการตรวจจับของ Exception
สายหนึง่
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndex
http://www.thaiall.com/class