“อ๊ะ นี่เธอ ฉันตามหาเธออยู่นะ”
"บางสิ่งบางอย่างเกิดขึ้นได้อย่างไร?"
“ไม่ค่ะ เรายังเรียนอยู่”
"ตกลง ฉันกำลังฟังอยู่"
"ฉันต้องการบอกคุณอีกสองสามอย่างเกี่ยวกับข้อยกเว้น:"
"ใน Java 7 โครงสร้าง try-catchถูกขยายออกไปเล็กน้อยโดยการเพิ่ม บล็อก catch หลายอันดูตัวอย่างนี้:"
try
{
…
}
catch (IOException ex)
{
logger.log(ex);
throw ex;
}
catch (SQLException ex)
{
logger.log(ex);
throw ex;
}
try
{
…
}
catch (IOException | SQLException ex)
{
logger.log(ex);
throw ex;
}
"ตอนนี้เราสามารถเขียนข้อยกเว้นหลายรายการโดยคั่นด้วยตัวดำเนินการ OR ('|' เป็นไบนารี OR) ได้หรือไม่
“นั่นสินะ ไม่สะดวกเหรอ?”
"อืม แต่ประเภทของวัตถุยกเว้นใน catch block จะเป็นอย่างไร"
"ท้ายที่สุด IOException ก็มีเมธอดของมัน และ SQLException ก็มีเมธอดของมัน"
"ประเภทข้อยกเว้นจะเป็นประเภทบรรพบุรุษร่วมกัน"
"อ่า กล่าวอีกนัยหนึ่ง น่าจะเป็นExeptionหรือRuntimeExceptionถ้าอย่างนั้น ทำไมไม่เขียน catch(Exception e)"
"บางครั้งเมื่อต้องจัดการข้อผิดพลาดทีละรายการ การจัดกลุ่มข้อผิดพลาด การเขียนบันทึกข้อผิดพลาด การโยนข้อผิดพลาดใหม่ และการจัดการข้อผิดพลาดด้วยวิธีอื่น"
"อีกนัยหนึ่ง โครงร่างนี้ได้รับการยอมรับว่าเป็นการแก้ปัญหาของบล็อก catch ที่ซ้ำกันสำหรับการจัดการข้อผิดพลาดต่างๆ"
“อ่า ฉันเข้าใจแล้ว ขอบคุณ เอลลี่”
"นั่นไม่ใช่ทั้งหมด ฉันอยากจะบอกคุณอีกเล็กน้อยเกี่ยวกับ ด่าน สุดท้าย "
"อย่างที่คุณทราบอยู่แล้ว บล็อกนี้จะถูกดำเนินการเสมอ"
"และเมื่อฉันพูดว่า เสมอ ฉันหมายถึงเสมออย่างแน่นอน "
"ตัวอย่างเช่น:"
try
{
return 1;
}
finally
{
return 0;
}
"ที่นี่มีการส่งคืนใน บล็อก tryและส่งคืนใน บล็อก สุดท้ายดังนั้นค่าส่งคืนของเมธอดนี้จะเป็นเลข 0"
" บล็อก สุดท้ายจะดำเนินการไม่ว่าจะเกิดอะไรขึ้น และ คำสั่ง returnจะเขียนทับค่าที่ส่งคืนอื่นด้วยค่าของมันเอง"
"ฉันเห็น."
"อย่างไรก็ตามเมธอดสามารถคืนค่าหรือโยนข้อยกเว้น "
"ดังนั้นหากมีการส่งคืนค่าในบล็อกการลอง แต่บล็อกสุดท้ายแสดงข้อยกเว้นผลลัพธ์ที่ได้จะเป็นข้อยกเว้น "
"จะเกิดอะไรขึ้นหากเกิดข้อยกเว้นใน บล็อก ลองแต่ บล็อก สุดท้ายมีคำสั่งส่งคืน"
"จากนั้นจะเหมือนกับว่าวิธีการทำงานอย่างถูกต้องและค่าในคำสั่ง return จะถูกส่งกลับ
ตัวอย่าง | ผลลัพธ์ |
---|---|
|
0 |
|
ข้อยกเว้นรันไทม์ |
|
0 |
|
IOข้อยกเว้น |
"เหตุผลเดียวที่เมธอดสุดท้ายอาจไม่ทำงานก็คือการยุติโปรแกรมทันทีโดยการเรียกเมธอดSystem.exit(); "
try
{
System.exit(0);
return 1;
}
finally
{
return 0;
}
"ฉันเห็น."
"โปรดจำไว้ว่าหัวข้อเหล่านี้มักจะถูกถามในการสัมภาษณ์ ดังนั้นจะเป็นการดีสำหรับคุณที่จะทำความเข้าใจและจดจำหัวข้อเหล่านั้น"
GO TO FULL VERSION