หลีกเลี่ยงการตรวจสอบค่า null ตอนที่ 2 (ปรับจาก code คุณสมเกียรติ)

work ซึ่งใช้ try catch จับ NullPointerException
work ซึ่งใช้ try catch จับ NullPointerException
เป็นวิธีแรก ที่อ่านพบจากโพสต์ของคุณสมเกียรติ
คือ การไม่ตรวจสอบ null value ในขณะประมวลผล
แต่ใช้การ try catch ตรวจ NullPointerException
ครอบการเรียกใช้ method ไว้ ซึ่ง code ที่เปลี่ยนแปลงมีเพียง work.java
ผลลัพธ์ที่ได้คือ
1burin
Null Pointer Exception
โดย code ทั้งหมดมี 3 แฟ้มมีดังนี้
1. แฟ้มแรก คือ Work.java
public class Work {
public static void main(String args[]) {
Work job = new Work();
try { job.call(); }
catch(NullPointerException e) {
System.out.println(“Null Pointer Exception”);
}
}
void call() {
PersonDAO personDAO = new PersonDAO();
Person person1 = personDAO.getPersonByID(1);
person1.setName(“burin”);
System.out.println(person1.getID() + person1.getName());
Person person2 = personDAO.getPersonByID(11);
person2.setName(“tui”);
System.out.println(person2.getID() + person2.getName());
}
}
2. แฟ้มที่สองคือ PersonDAO.java
public class PersonDAO {
public Person getPersonByID(int personID) {
Person person = null;
if (personID < 10 && personID > 0) {
person = new Person();
person.setID(personID);
}
return person;
}
}
3. แฟ้มที่สามคือ Person.java
public class Person {
private int id;
private String name;
public void setName(String s) { name = s; }
public void setID(int i) { id = i; }
public int getID() { return id; }
public String getName() { return name; }
}
ตอนที่ 1 เตรียม code สำหรับการเริ่มต้น

ภาษาจาวาโยนความผิด ใครรับก็รับไป

throws exception
throws exception

บางคนบอกว่า ชีวิตจริงดั่งละคร
บางคนก็บอกว่า ละครนั่นหละชีวิตจริง

วันนี้เจอว่าภาษาคอมพิวเตอร์ เขามีให้จับผิด
แล้วยังเปิดให้โยนความผิดได้ ใครรับก็รับไป
ถ้าไม่มีใครรับ คุณโอบอกว่าสุดท้าย JVM ก็ต้องรับไป

ภาษาคอมพิวเตอร์ก็เหมือนกับชีวิตจริง .. มีดราม่า

มีให้เลือกว่าจะโยนความผิดให้ใคร
คลาส y มีเมทธอด yy ซึ่งคาดว่าทำเรื่องผิดพลาดไว้
แต่ไม่อยากตรวจจับด้วยตนเอง ด้วยเหตุผลนานา
บอกว่าใครใช้ฉัน .. ก็รับความผิดฉันไปด้วย
เมื่อมีการเรียกใช้ yy ต้องเพิ่มการจับว่า ถ้าพบจะทำอะไร
เพราะมีผิดให้จับแน่นอน .. กำหนดมาอย่างนั้น

นั่งทวน slide เรื่องข้อยกเว้น .. อยู่ครับ