ข้อยกเว้นแบบตรวจสอบและไม่ตรวจสอบ
ทำความเข้าใจความแตกต่างระหว่างข้อยกเว้นแบบตรวจสอบและไม่ตรวจสอบใน Java
ข้อยกเว้นแบบตรวจสอบและไม่ตรวจสอบ เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน
บทนำ
ข้อยกเว้นใน Java แบ่งเป็นสองกลุ่ม ได้แก่ ข้อยกเว้นที่ต้องตรวจสอบ และ ข้อยกเว้นที่ไม่ต้องตรวจสอบ การทราบความแตกต่างช่วยให้คุณออกแบบเมธอดได้อย่างถูกต้อง
ข้อยกเว้นที่ต้องตรวจสอบ
ข้อยกเว้นที่ต้องตรวจสอบ ขยายต่อจาก ข้อยกเว้น (แต่ไม่ใช่ RuntimeException) คอมไพเลอร์จะบังคับให้คุณจัดการหรือประกาศข้อยกเว้นเหล่านี้ด้วย throws
โค้ด: IOException ที่ต้องตรวจสอบ
IOException เป็นข้อยกเว้นที่ต้องตรวจสอบ คุณต้องดักจับหรือประกาศข้อยกเว้นนี้ไว้ในลายเซ็นของเมธอด
public class Main {
public static void main(String[] args) {
try {
java.io.FileReader fr = new java.io.FileReader("missing.txt"); // checked exception
fr.read();
fr.close();
} catch (java.io.IOException e) {
System.out.println("Handled IOException: " + e.getMessage());
}
}
}
ข้อยกเว้นที่ไม่ต้องตรวจสอบ
ข้อยกเว้นที่ไม่ต้องตรวจสอบ ขยายต่อจาก RuntimeException คอมไพเลอร์ไม่บังคับให้จัดการข้อยกเว้นเหล่านี้ ตัวอย่างเช่น NullPointerException และ ArithmeticException
โค้ด: NPE ที่ไม่ต้องตรวจสอบ
NullPointerException เป็นข้อยกเว้นที่ไม่ต้องตรวจสอบ คุณสามารถดักจับได้ แต่คอมไพเลอร์จะไม่บังคับให้ทำเช่นนั้น
public class Main {
public static void main(String[] args) {
String s = null;
try {
System.out.println(s.length()); // unchecked exception
} catch (NullPointerException e) {
System.out.println("Caught NullPointerException");
}
}
}
โค้ด: การประกาศข้อยกเว้น
ข้อยกเว้นที่ต้องตรวจสอบสามารถประกาศได้ด้วยคำสั่งประกาศข้อยกเว้น ผู้เรียกต้องจัดการหรือส่งต่อข้อยกเว้นเหล่านี้
public class Main {
static void risky() throws java.io.IOException {
throw new java.io.IOException("I/O problem");
}
public static void main(String[] args) {
try {
risky();
} catch (java.io.IOException e) {
System.out.println("Handled in main: " + e.getMessage());
}
}
}
ตรวจสอบข้อยกเว้นที่ต้องตรวจสอบเทียบกับที่ไม่ต้องตรวจสอบ
คำถามตรวจสอบอย่างรวดเร็ว: ข้อใดถูกต้องเกี่ยวกับข้อยกเว้นที่ต้องตรวจสอบและที่ไม่ต้องตรวจสอบ
ทบทวน
ทบทวน: ข้อยกเว้นที่ต้องตรวจสอบ เช่น IOException ต้องประกาศหรือจัดการ ส่วนข้อยกเว้นที่ไม่ต้องตรวจสอบ เช่น RuntimeException จะจัดการหรือไม่ก็ได้
เรียนรู้ Java ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 104
- บทเรียน
- 374
คำถามที่พบบ่อย
บทเรียน “ข้อยกเว้นแบบตรวจสอบและไม่ตรวจสอบ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ข้อยกเว้นแบบตรวจสอบและไม่ตรวจสอบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ข้อยกเว้นแบบตรวจสอบและไม่ตรวจสอบ”
ทำความเข้าใจความแตกต่างระหว่างข้อยกเว้นแบบตรวจสอบและไม่ตรวจสอบใน Java คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “ข้อยกเว้นแบบตรวจสอบและไม่ตรวจสอบ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- try/catch/finally
- ข้อยกเว้นแบบตรวจสอบและไม่ตรวจสอบ
- การอ่านสแตกเทรซ