นอกจากนี้เรายังสามารถใช้คำสั่ง try...catch...finally เพื่อจัดการกับข้อยกเว้น เมื่อโปรแกรมดำเนินการกับรหัสข้อผิดพลาด ระบบจะส่งวัตถุข้อยกเว้น และโปรแกรมจะเข้าสู่บล็อก catch เพื่อจับคู่ทีละรายการ หากการจับคู่สำเร็จ โปรแกรมจะรันโค้ด catch หากการจับคู่ล้มเหลว โปรแกรมจะถูกส่งกลับไปยังเครื่องเสมือน Java เพื่อประมวลผล
รูปแบบของคำสั่ง try...catch...finally เป็นดังนี้: try{//Contains คำสั่งที่อาจทำให้เกิดข้อยกเว้น (ยกเว้นชื่อคลาส ข้อยกเว้นวัตถุ){//โค้ดจัดการข้อยกเว้น}ในที่สุด{//โค้ดที่ จะต้องดำเนินการ}
สิ่งที่ควรทราบ:
1) พยายามทำให้โค้ด try block มีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้
2) เมื่อเกิดข้อยกเว้นในโค้ด try block ไม่ว่าโค้ดจะตาม try block กี่บรรทัดก็ตาม มันก็จะไม่ถูกดำเนินการ
3) การจับคู่พารามิเตอร์ข้อยกเว้นใน catch block ยังเป็นไปตาม polymorphic Exception e = new ArithmeticException(/by zero);
4) สามารถมีได้เพียงหนึ่ง try block และสามารถมีหลาย catch block ได้ try สามารถรวมกับ catch ได้ try สามารถรวมกับในที่สุด และ try สามารถรวมกับ catch และสุดท้าย
5) โดยทั่วไป Exception จะถูกใช้เป็นประเภทพารามิเตอร์ของ catch ที่ส่วนท้ายของรูปแบบการจัดการข้อยกเว้น
6) การยกเว้น เป็นพารามิเตอร์ข้อยกเว้นของคลาสพาเรนต์สามารถปรากฏที่ส่วนท้ายของข้อยกเว้นเท่านั้น อันดับแรกคือคลาสย่อย จากนั้นจึงไปที่คลาสพาเรนต์
7) บล็อกโค้ดที่ถูกแก้ไข ในที่สุด จะถูกดำเนินการอย่างแน่นอน เว้นแต่โปรแกรมจะออกอย่างผิดปกติหรือมีการเรียกวิธีการออกจากระบบก่อนที่การดำเนินการจะถึงขั้นสุดท้าย
8) ในคำสั่ง try เมื่อคำสั่ง return ถูกดำเนินการ ผลลัพธ์ที่จะส่งคืนก็พร้อมแล้ว ในเวลานี้ โปรแกรมจะสลับไปที่การดำเนินการในที่สุด ก่อนที่จะถ่ายโอน ให้ลองเก็บผลลัพธ์ที่จะส่งคืนในตัวแปรโลคัลที่แตกต่างจาก x ในที่สุด หลังจากดำเนินการแล้ว ผลลัพธ์ที่ส่งคืนจะถูกนำออกไปในที่สุด แม้ว่าตัวแปร x จะถูกเปลี่ยนในที่สุด ก็จะไม่ส่งผลต่อการส่งคืน ผลลัพธ์จึงควรใช้สแต็กเพื่อบันทึกค่าที่ส่งคืน