ตรวจสอบข้อผิดพลาดรันไทม์ของ Java
ภาพรวมโดยย่อของ Java Runtime Errors
· Runtime Errors ใน Java คืออะไร?
· ข้อผิดพลาดรันไทม์ VS ข้อผิดพลาดเวลาคอมไพล์
· ประเภทของข้อผิดพลาดรันไทม์
· ข้อผิดพลาดรันไทม์ปรากฏขึ้นอย่างไร
· ฉันต้องโยนข้อผิดพลาดรันไทม์หรือไม่
· เกิดอะไรขึ้นเมื่อคุณไม่พบข้อยกเว้นรันไทม์
· ตัวอย่างข้อผิดพลาดรันไทม์
ข้อผิดพลาดรันไทม์ใน Java คืออะไร
ข้อผิดพลาดที่เกิดขึ้นในขณะดำเนินการโปรแกรมเรียกว่าข้อผิดพลาดรันไทม์ ข้อผิดพลาดประเภทนี้ไม่สามารถตรวจพบได้ในขณะคอมไพล์ เนื่องจากไม่มีข้อผิดพลาดในไวยากรณ์ ดังนั้นข้อผิดพลาดรันไทม์เกิดขึ้นเมื่อโปรแกรมรวบรวมสำเร็จโดยไม่มีข้อผิดพลาดและสร้างไฟล์ ".class" อย่างไรก็ตาม โปรแกรมทำงานไม่ถูกต้อง ตรวจพบข้อผิดพลาดเหล่านี้ในขณะรันไทม์หรือในขณะที่ดำเนินการโปรแกรม
คอมไพเลอร์ Java ตรวจไม่พบข้อผิดพลาดรันไทม์เนื่องจากคอมไพเลอร์ Java ไม่มีเทคนิคใด ๆ ในการตรวจจับข้อผิดพลาดเหล่านี้ เนื่องจากไม่มีข้อมูลรันไทม์ทั้งหมดที่พร้อมใช้งาน ข้อผิดพลาดรันไทม์ถูกจับโดยJava Virtual Machine (JVM) เมื่อโปรแกรมกำลังทำงาน
ข้อผิดพลาดรันไทม์เหล่านี้เรียกว่าข้อยกเว้นและยุติโปรแกรมอย่างผิดปกติ โดยแสดงข้อความแสดงข้อผิดพลาด
ข้อยกเว้นคือข้อผิดพลาดที่เกิดขึ้นขณะรันไทม์ เราสามารถใช้ เทคนิค การจัดการข้อยกเว้นใน Java เพื่อจัดการกับข้อผิดพลาดรันไทม์เหล่านี้ ในการจัดการข้อยกเว้น ชิ้นส่วนของโค้ดที่โปรแกรมเมอร์คิดว่าสามารถสร้างข้อผิดพลาดได้นั้นจะถูกใส่ไว้ในบล็อกการลอง และโปรแกรมเมอร์สามารถจับข้อผิดพลาดภายในบล็อกที่จับได้
ข้อผิดพลาดรันไทม์ VS ข้อผิดพลาดเวลาคอมไพล์
ข้อผิดพลาดในการคอมไพล์โดยทั่วไปหมายถึงข้อผิดพลาดที่สอดคล้องกับความหมายหรือไวยากรณ์ ข้อผิดพลาดรันไทม์หมายถึงข้อผิดพลาดที่เราพบระหว่างการดำเนินการโค้ดระหว่างรันไทม์ เราสามารถแก้ไขข้อผิดพลาดในการคอมไพล์ระหว่างการพัฒนาโค้ดได้อย่างง่ายดาย คอมไพเลอร์ไม่สามารถระบุข้อผิดพลาดรันไทม์ได้
การตรวจจับ
คอมไพเลอร์สามารถตรวจจับข้อผิดพลาดเวลาคอมไพล์ได้อย่างง่ายดายในระหว่างการพัฒนาโค้ด คอมไพเลอร์ไม่สามารถตรวจจับข้อผิดพลาดรันไทม์ได้อย่างง่ายดาย ดังนั้นเราจึงจำเป็นต้องระบุในระหว่างการดำเนินการโค้ด
อ้างอิง
ข้อผิดพลาดเวลาคอมไพล์โดยทั่วไปหมายถึงข้อผิดพลาดที่สอดคล้องกับความหมายหรือไวยากรณ์ ข้อผิดพลาดรันไทม์หมายถึงข้อผิดพลาดที่คอมไพเลอร์ตรวจไม่พบ แต่เราพบข้อผิดพลาดเหล่านี้ระหว่างการดำเนินการโค้ด (ระหว่างรันไทม์)
ผลกระทบ
ข้อผิดพลาดในการคอมไพล์เวลาคือ ข้อผิดพลาด ทางความหมายหรือไวยากรณ์ซึ่งจะป้องกันไม่ให้โค้ดทำงาน (การคอมไพล์) เนื่องจากตรวจพบข้อผิดพลาดทางไวยากรณ์ Wheares Runtime Errors ทำให้โค้ดไม่สามารถดำเนินการได้อย่างสมบูรณ์
การตรึง
เราสามารถแก้ไขข้อผิดพลาดเวลาคอมไพล์ระหว่างการพัฒนาโค้ดได้อย่างง่ายดาย คอมไพเลอร์ไม่สามารถระบุข้อผิดพลาดรันไทม์ได้ แต่เราสามารถแก้ไขได้หลังจากการรันโค้ดและการระบุโค้ดในครั้งก่อน
ประเภทของข้อผิดพลาดรันไทม์
มีข้อผิดพลาดรันไทม์หลายประเภทที่เราสามารถพบเจอได้ในขณะดำเนินการโปรแกรม ข้อผิดพลาดรันไทม์ที่พบบ่อยบางส่วนแสดงอยู่ด้านล่าง:
ข้อผิดพลาดในการป้อนข้อมูล : ข้อผิดพลาดอินพุตและเอาต์พุต
มีวิธีนับไม่ถ้วนที่ผู้ใช้ป้อนอาจทำให้แอปพลิเคชันเสียหายได้
บนกระดานความคิดเห็นที่ใช้ HTML ผู้ใช้ที่ได้รับอนุญาตให้ส่งเครื่องหมายน้อยกว่า (<) หรือมากกว่า (>) ที่ไม่ได้เข้ารหัสอาจทำลายความสามารถในการแสดงผลของหน้าเว็บนั้นโดยสิ้นเชิง ในทำนองเดียวกัน ระบบประมวลผลข้อความที่สร้างขึ้นเพื่อคาดหวังให้อินพุตทั้งหมดในรูปแบบ ASCII สามารถยุติก่อนเวลาอันควรได้หากได้รับอีโมจิหรือการป้อนอักขระที่ไม่เป็นมาตรฐาน
ที่ร้ายกาจกว่านั้น เวกเตอร์การโจมตีที่แฮ็กเกอร์ชื่นชอบคือSQL injectionซึ่งซ่อนการสืบค้นฐานข้อมูลที่เรียกใช้งานได้ที่เป็นอันตรายภายในช่องป้อนข้อมูลที่ไม่เป็นอันตราย สิ่งนี้ไม่เพียงทำให้แอปพลิเคชันทำงานล้มเหลวเท่านั้น แต่ยังอาจสูญเสียการควบคุมชั้นข้อมูลทั้งหมดอีกด้วย
กระบวนการล้างข้อมูลอินพุต หรือการล้างข้อมูลจะแปลงสเปกตรัมของข้อมูลที่อาจถูกป้อนเข้าสู่แอปพลิเคชันให้เป็นค่าช่วงที่ปลอดภัยที่โปรแกรมเข้าใจ การใช้ไลบรารีดังกล่าวช่วยลดข้อผิดพลาดรันไทม์ที่เกิดจากความล้มเหลวในการล้างอินพุต
เฟรมเวิร์ก Java ยอดนิยม เช่น Apache BVal และ Hibernate Validator ทำการล้างข้อมูลอินพุตตามคำอธิบายประกอบที่เรียบง่าย และรวมเข้ากับแอปพลิเคชันที่ใช้ Java ได้อย่างง่ายดาย
ตรรกะที่ใช้งานไม่ดี
เพียงเพราะการคอมไพล์โค้ดไม่ได้หมายความว่ามันทำงานได้อย่างถูกต้อง รหัสมักจะมีปัญหาทางตรรกะที่ทำให้แอปพลิเคชันล้มเหลวขณะรันไทม์
Java มีโครงสร้างในตัวเพื่อจัดการคลาสของข้อผิดพลาดรันไทม์ที่เกี่ยวข้องกับโค้ดทั่วไป ที่เรียกว่า RuntimeException หรือข้อยกเว้นที่ไม่ได้ตรวจสอบ Java 17กำหนดข้อผิดพลาดดังกล่าว 78 ข้อใน SDK เพียงอย่างเดียว และโครงการและเฟรมเวิร์กอื่นๆ ยังกำหนดข้อผิดพลาด RuntimeException ของตนเองเพิ่มเติม
- ข้อยกเว้นรันไทม์
- ArrayIndexOutOfBoundException
- ข้อยกเว้นการปรับเปลี่ยนพร้อมกัน
- ClassCastException
- …
อย่างน้อยที่สุด ทุกแอปพลิเคชันควรมีสายรัดข้อยกเว้นทั่วไปที่สามารถจับทุก RuntimeException ที่เป็นไปได้ บันทึกข้อผิดพลาดและปล่อยให้เธรดการดำเนินการที่มีปัญหาตายแทนที่จะยกเลิกแอปพลิเคชันทั้งหมด
ทรัพยากรรันไทม์ไม่เพียงพอ
นักพัฒนาซอฟต์แวร์ไม่ต้องแบกรับความผิดสำหรับข้อผิดพลาดรันไทม์ทุกประเภทที่เกิดขึ้น ข้อผิดพลาดรันไทม์จำนวนมากใน Java เกี่ยวข้องกับข้อจำกัดด้านทรัพยากรที่เกิดจากปัญหาเกี่ยวกับโครงสร้างพื้นฐาน ตัวอย่าง ได้แก่ การหมดเวลาของเครือข่ายสภาวะหน่วยความจำไม่เพียงพอการใช้งาน CPU มากเกินไปหรือการไม่สามารถกำหนดเวลาเธรดบนโปรเซสเซอร์
วิธีหนึ่งในการหลีกเลี่ยงข้อผิดพลาดรันไทม์ที่เกี่ยวข้องกับทรัพยากรคือการใช้เครื่องมือทดสอบโหลด เช่น JMeter หรือ LoadRunner ในไปป์ไลน์ CI/CD ของแอปพลิเคชัน หากเครื่องมือเหล่านี้ตรวจพบปัญหาด้านประสิทธิภาพที่เป็นไปได้ เครื่องมือเหล่านี้สามารถหยุดแอปพลิเคชันก่อนที่จะย้ายไปยังไปป์ไลน์ไปสู่การปรับใช้จริง
โหลดของแอปพลิเคชันบางตัวจะแตกต่างกันไปอย่างมาก ตัวอย่างเช่น แอปบริการทางการเงินอาจมีการโหลดที่สม่ำเสมอเป็นส่วนใหญ่ แต่จะมีงานยุ่งมากเมื่อสิ้นสุดวันซื้อขาย บริการด้านภาษีอาจมียอดโหลดสูงสุดก่อนกำหนดส่ง แต่จะมีภาระค่อนข้างน้อยในช่วงที่เหลือของปี
ทีม DevOps ต้องตรวจสอบเมตริกประสิทธิภาพด้วยเครื่องมือเพื่อตรวจจับและลดข้อผิดพลาดรันไทม์ที่เกี่ยวข้องกับทรัพยากร ตัวอย่างของเครื่องมือดังกล่าว ได้แก่ JDK Flight Recorder และJava Mission Control
สำหรับแอปพลิเคชันที่มีเวิร์กโหลดที่คาดเดาไม่ได้โดยสิ้นเชิง ให้ใช้เทคโนโลยีโหลดบาลานซ์บนคลาวด์เพื่อจัดสรรทรัพยากรอย่างยืดหยุ่น ซึ่งจะช่วยขจัดทั้งทรัพยากรที่จัดสรรน้อยเกินไป และกับดักการซื้อฮาร์ดแวร์ราคาแพงที่ไม่ค่อยได้ใช้
การกำหนดค่าทรัพยากรภายนอก
แอปพลิเคชันระดับองค์กรแทบจะไม่มีอยู่ในฟองสบู่ที่แยกออกมา โดยทั่วไปแล้วจะโต้ตอบกับทุกสิ่งตั้งแต่ฐานข้อมูล NoSQL และระบบเชิงสัมพันธ์ไปจนถึงคิว Kafka และ RESTful API ขออภัย หากแอปพลิเคชันของคุณไม่สามารถเชื่อมต่อกับระบบภายนอกที่จำเป็นได้ สิ่งนี้จะส่งผลให้เกิดข้อผิดพลาดรันไทม์อย่างหลีกเลี่ยงไม่ได้
ทรัพยากรภายนอกอาจทำให้เกิดข้อผิดพลาดรันไทม์ได้ หากเกิดสถานการณ์ใดๆ ต่อไปนี้โดยไม่มีการอัพเดตที่สอดคล้องกับโปรแกรมที่เรียกใช้:
- การเปลี่ยนแปลงที่อยู่ IP;
- ข้อมูลประจำตัวเปลี่ยน;
- การเปลี่ยนแปลงการกำหนดค่าไฟร์วอลล์ หรือ
- ระบบภายนอกหยุดทำงานเพื่อการบำรุงรักษา
ในทำนองเดียวกันเครื่องมือวิศวกรรมความโกลาหลจะยุติกระบวนการที่แอปพลิเคชันขึ้นอยู่กับการสุ่ม เครื่องมือดังกล่าวบังคับให้นักพัฒนาเขียนโค้ดที่ยังคงตอบสนองและยืดหยุ่นได้แม้ว่าระบบภายนอกจะล้มเหลว
ปัญหาโดยธรรมชาติของทรัพยากรภายนอกคือนักพัฒนาไม่สามารถควบคุมทรัพยากรเหล่านั้นได้ แต่พวกเขาสามารถควบคุมการตอบสนองของแอปพลิเคชันเมื่อทรัพยากรภายนอกเหล่านั้นล้มเหลว คาดการณ์ข้อผิดพลาดรันไทม์ที่เกิดจากระบบที่คุณไม่ได้ควบคุม และเขียนแอปพลิเคชันที่ตอบสนองอย่างสง่างามเมื่อระบบภายนอกเหล่านั้นล้มเหลว
ช่องโหว่ของห้องสมุดบุคคลที่สาม
แอปพลิเคชันระดับองค์กรที่ไม่สำคัญใด ๆ มีการพึ่งพาหลายสิบรายการในไลบรารีของบุคคลที่สามเพื่อทำหน้าที่ต่าง ๆ เช่น การบันทึก การตรวจสอบ การตรวจสอบความถูกต้องของอินพุต การจัดการแบบฟอร์ม และอื่น ๆ
น่าเสียดายที่ข้อบกพร่องในไลบรารีของบุคคลที่สามกลายเป็นข้อบกพร่องในแอปพลิเคชันที่คุณปรับใช้ สิ่งนี้กลายเป็นเรื่องจริงที่น่าอึดอัดใจสำหรับโลก Java ในเดือนธันวาคม 2021 เนื่องจากLDAP แทรกข้อบกพร่องในไลบรารี Log4j 2 ที่ใช้กันอย่างแพร่หลายบังคับให้ JVM ทั่วโลกต้องออฟไลน์
วิธีหนึ่งในการบรรเทาความเป็นไปได้ที่การพึ่งพาซอฟต์แวร์ทำให้เกิดข้อผิดพลาดรันไทม์ในแอปพลิเคชันคือการใช้ไลบรารีที่เชื่อถือได้จากองค์กร เช่น Apache หรือ Eclipse เท่านั้น
มาตรการป้องกันอีกประการหนึ่งคือการอัปเดตการพึ่งพาของแอปพลิเคชันเป็นเวอร์ชันล่าสุดเป็นประจำทันทีที่การอัปเดตพร้อมใช้งาน
สุดท้าย ระวังการพึ่งพารองหรือตติยภูมิ — การพึ่งพาหลักของคุณพึ่งพาอาศัย — และระวังความเสี่ยงใด ๆ ที่นำมาด้วย
ในโลกของการพัฒนาซอฟต์แวร์ "สมบูรณ์แบบ" เป็นศัตรูของ "เสร็จสิ้น" ไม่มีโปรแกรมใดรอดพ้นจากการคุกคามของข้อผิดพลาดรันไทม์ที่ไม่คาดคิด อย่างไรก็ตาม เมื่อนักพัฒนาองค์กรตระหนักถึงสาเหตุที่เป็นไปได้และดำเนินการเพื่อลดภัยคุกคามที่อาจเกิดขึ้น พวกเขาสามารถสร้างซอฟต์แวร์ที่ลดโอกาสที่จะพบข้อผิดพลาดรันไทม์ให้น้อยที่สุด
ข้อผิดพลาดรันไทม์ปรากฏขึ้นอย่างไร
ยินดีด้วย! หากพรอมต์คำสั่งของคุณมีลักษณะดังนี้:
จากนั้นคุณก็คอมไพล์โปรแกรมของคุณเป็น Java bytecode ได้สำเร็จ หมายความว่าโค้ดของคุณไม่มีปัญหาทางวากยสัมพันธ์! แต่ตามชื่อไฟล์ที่เราเรียกใช้โปรแกรมนี้:
ขณะนี้เราพบข้อผิดพลาดรันไทม์ ข้อผิดพลาดรันไทม์มักเกิดขึ้นเมื่อมีบางสิ่งที่ไม่ถูกต้องตามตรรกะในโค้ดของคุณ เอกสารนี้จะอธิบายวิธีการอ่านและแก้ไขข้อผิดพลาดรันไทม์
นี่คือส่วนสำคัญของข้อผิดพลาดรันไทม์
ข้อยกเว้นในเธรด "หลัก" : ส่วนนี้ปรากฏขึ้นสำหรับข้อผิดพลาดรันไทม์ส่วนใหญ่ มันแค่บอกคุณว่าเกิดข้อยกเว้นในเมธอดหลัก ซึ่งควรจะเกิดขึ้นตลอดเวลา
java.lang.ArrayIndexOutOfBoundsException: 5 : นี่เป็นข้อผิดพลาดที่เกิดขึ้น โดยทั่วไป ชื่อของข้อผิดพลาดจะทำให้คุณทราบสิ่งที่อาจเกิดขึ้น ในกรณีนี้ เรารู้ว่ามันเกี่ยวข้องกับอาร์เรย์และการออกนอกพื้นที่ที่กำหนดสำหรับอาร์เรย์
ที่ RunTimeErrors.main(RunTimeErrors.java:10) : สิ่งนี้เรียกว่าการติดตามสแต็ก ซึ่งจะบอกคุณถึงรายการของวิธีการดำเนินการเมื่อเกิดข้อผิดพลาด
- RunTimeErrors.mainบอกเราว่าข้อผิดพลาดนี้เกิดขึ้นภายในเมธอดหลักของคลาส RunTimeErrors
- RunTimeErrors.java:10บอกเราว่าไฟล์นี้เกิดขึ้นที่ใดและเกิดขึ้นที่บรรทัดใด ในกรณีนี้ เกิดขึ้นในชั้นเรียนหลักของเราที่บรรทัดที่10
บางครั้งคุณต้องทำการตรวจสอบเพื่อตัดสินใจว่าจะส่งข้อยกเว้นรันไทม์หากระบบไม่สามารถทำได้โดยลำพัง บ่อยครั้งเมื่อทำงานกับIllegalArgumentExceptionแต่ส่วนใหญ่คุณไม่จำเป็นต้องทำการตรวจสอบเพราะนี่เป็นส่วนหนึ่งของ การตรวจสอบรันไทม์มาตรฐานที่ Java ดำเนินการให้คุณ
ลองใช้NullPointerExceptionเป็นตัวอย่าง:
if(t == null)
throw new NullPointerException();
if(t != null) {
// work with t reference
}
จะเกิดอะไรขึ้นเมื่อคุณไม่พบข้อยกเว้นรันไทม์ เนื่องจากคอมไพเลอร์ไม่ได้บังคับใช้ข้อกำหนดข้อยกเว้นสำหรับสิ่งเหล่านี้ จึงมีความเป็นไปได้ค่อนข้างมากที่RuntimeExceptionสามารถแทรกซึมเข้าไปในเมธอด main( ) ของคุณโดยไม่ถูกจับได้ หากต้องการดูว่าเกิดอะไรขึ้นในกรณีนี้ ลองตัวอย่างต่อไปนี้:
//: exceptions/NeverCaught.java
// Ignoring RuntimeExceptions.
// {ThrowsException}
public class NeverCaught {
static void f() {
throw new RuntimeException("From f()");
}
static void g() {
f();
}
public static void main(String[] args) {
g();
}
} ///:~
Exception in thread "main" Java.lang.RuntimeException: From f()
at NeverCaught.f(NeverCaught.Java:7)
at NeverCaught.g(NeverCaught.Java:10)
at NeverCaught.main(NeverCaught.Java:13)
โปรดทราบว่าเฉพาะข้อยกเว้นประเภทRuntimeException (และคลาสย่อย) เท่านั้นที่สามารถละเว้นในการเขียนโค้ดของคุณได้ เนื่องจากคอมไพเลอร์บังคับใช้การจัดการข้อยกเว้นที่ตรวจสอบทั้งหมดอย่างระมัดระวัง เหตุผลคือRuntimeExceptionแสดงถึงข้อผิดพลาดในการเขียนโปรแกรม ซึ่งก็คือ:
ข้อผิดพลาดที่คุณคาดไม่ถึง ตัวอย่างเช่น การอ้างอิงค่าว่างที่อยู่นอกเหนือการควบคุมของคุณ
ข้อผิดพลาดที่คุณในฐานะโปรแกรมเมอร์ควรตรวจสอบในโค้ดของคุณ (เช่นArraylndexOutOfBoundsExceptionซึ่งคุณควรให้ความสนใจกับขนาดของอาร์เรย์) ข้อยกเว้นที่เกิดขึ้นจากจุดที่ 1 มักจะกลายเป็นปัญหาสำหรับจุด
คุณสามารถดูได้ว่าการมีข้อยกเว้นในกรณีนี้มีประโยชน์มหาศาลเพียงใด เนื่องจากจะช่วยในกระบวนการดีบัก
เป็นเรื่องน่าสนใจที่จะสังเกตว่าคุณไม่สามารถจัดประเภทการจัดการข้อยกเว้นของ Java เป็นเครื่องมือวัตถุประสงค์เดียวได้ ใช่ มันถูกออกแบบมาเพื่อจัดการข้อผิดพลาดรันไทม์ที่น่ารำคาญที่จะเกิดขึ้นเนื่องจากแรงที่อยู่นอกเหนือการควบคุมของโค้ดของคุณ แต่มันก็จำเป็นเช่นกันสำหรับข้อบกพร่องในการเขียนโปรแกรมบางประเภทที่คอมไพเลอร์ตรวจไม่พบ
ตัวอย่างข้อผิดพลาดรันไทม์
public class Temp {
public static void main(String[] args) {
Temp t = initT();
t.foo("Hi");
}
private static Temp initT() {
return null;
}
public void foo(String s) {
System.out.println(s.toLowerCase());
}
}
Exception in thread "main" java.lang.NullPointerException
at Temp.main(Temp.java:7)
มีกลุ่มประเภทข้อยกเว้นทั้งหมดที่อยู่ในหมวดหมู่นี้ พวกเขาจะถูกส่งโดยอัตโนมัติโดย Java และคุณไม่จำเป็นต้องรวมไว้ในข้อกำหนดข้อยกเว้นของคุณ สะดวกพอ พวกมันทั้งหมดถูกจัดกลุ่มเข้าด้วยกันโดยวางไว้ภายใต้คลาสพื้นฐานเดียวที่เรียกว่าRuntimeExceptionซึ่งเป็นตัวอย่างที่สมบูรณ์แบบของการสืบทอด: มันสร้างตระกูลของประเภทที่มีลักษณะและพฤติกรรมบางอย่างเหมือนกัน นอกจากนี้ คุณไม่จำเป็นต้องเขียนข้อกำหนดข้อยกเว้นโดยระบุว่าเมธอดอาจทิ้ง RuntimeException (หรือประเภทใดก็ตามที่สืบทอดมาจากRuntimeException ) เนื่องจากเป็นข้อยกเว้นที่ไม่ได้ตรวจสอบ เนื่องจากข้อผิดพลาดดังกล่าวบ่งชี้ข้อบกพร่อง คุณมักจะไม่พบRuntimeException— มันจัดการโดยอัตโนมัติ หากคุณถูกบังคับให้ตรวจสอบRuntimeExceptionsรหัสของคุณอาจยุ่งเกินไป แม้ว่าโดยปกติแล้วคุณจะไม่พบRuntimeExceptionsแต่ในแพ็คเกจของคุณเอง คุณอาจเลือกที่จะทิ้งRuntimeExceptionsบาง ส่วน
ดูข้อยกเว้นรันไทม์ที่พบบ่อยที่สุด
มีความสุขในการเรียนรู้
เข้าร่วมกลุ่ม Mouad Oumous Java WhatsApp เข้าร่วม
เข้าร่วม Mouad Oumous Telegram Channel เข้าร่วม
สนับสนุนสิ่งพิมพ์ของเราโดยติดตาม
GraphQL พร้อม Spring Boot ข้อผิดพลาดรันไทม์ Java ที่พบบ่อยที่สุด การเริ่มต้นใช้งาน Spring Boot: บทช่วยสอนที่ครอบคลุมสำหรับผู้เริ่มต้น 10 วิธีง่ายๆ แต่ได้ผลในการปรับปรุงคุณภาพชีวิตของคุณ คำถามที่พบบ่อยที่สุด Java8 คำถามสัมภาษณ์ตามสตรีม — ส่วนสุดท้าย ฉันได้รับ $300 จากการเขียนหนังสือ ใน 2 วัน — นี่คือวิธี การผูกข้อยกเว้นใน Java | การจัดการข้อยกเว้น วิธีสร้างโครงการ Quarkus อย่างง่ายด้วยการรวมฐานข้อมูล




































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)