บทความนี้มุ่งเน้นไปที่แนวคิดบางอย่างของกลไกข้อยกเว้นใน Java จุดประสงค์ในการเขียนบทความนี้คือเพื่ออำนวยความสะดวกให้ฉันจดจำสิ่งเหล่านี้หลังจากผ่านไปนาน
1. กลไกข้อยกเว้น
1.1 กลไกข้อยกเว้นหมายถึงวิธีที่โปรแกรมจัดการเมื่อเกิดข้อผิดพลาด โดยเฉพาะกลไกข้อยกเว้นให้ช่องทางที่ปลอดภัยสำหรับการออกจากโปรแกรม เมื่อเกิดข้อผิดพลาดกระบวนการของการดำเนินการโปรแกรมจะเปลี่ยนแปลงและการควบคุมของโปรแกรมจะถูกถ่ายโอนไปยังตัวประมวลผลข้อยกเว้น
1.2 วิธีดั้งเดิมในการจัดการกับข้อยกเว้นคือฟังก์ชั่นส่งคืนผลลัพธ์พิเศษเพื่อระบุว่ามีข้อยกเว้นเกิดขึ้น (โดยปกติแล้วผลลัพธ์พิเศษนี้เป็นที่รู้จักกันทั่วไปว่าเป็น) และโปรแกรมที่เรียกว่าฟังก์ชั่นนั้นรับผิดชอบในการตรวจสอบและวิเคราะห์ผลลัพธ์ที่ส่งคืนโดยฟังก์ชั่น สิ่งนี้มีข้อเสียต่อไปนี้: ตัวอย่างเช่นหากฟังก์ชั่นส่งคืน -1 หมายความว่ามีข้อยกเว้นเกิดขึ้น แต่ถ้าฟังก์ชั่นต้องการคืนค่าที่ถูกต้องของ -1 มันจะสับสน ความสามารถในการอ่านลดลงและรหัสโปรแกรมจะผสมกับรหัสที่จัดการข้อยกเว้น โปรแกรมที่เรียกฟังก์ชั่นวิเคราะห์ข้อผิดพลาดซึ่งต้องการให้โปรแกรมเมอร์ไคลเอนต์มีความเข้าใจอย่างลึกซึ้งเกี่ยวกับฟังก์ชั่นไลบรารี
1.3 กระบวนการจัดการข้อยกเว้น
1.3.1 เมื่อพบข้อผิดพลาดวิธีการจะสิ้นสุดลงทันทีและไม่ส่งคืนค่า ในเวลาเดียวกันวัตถุข้อยกเว้นจะถูกโยนทิ้ง
1.3.2 โปรแกรมที่เรียกวิธีการนี้จะไม่ดำเนินการต่อไป แต่ค้นหาตัวจัดการข้อยกเว้นที่สามารถจัดการข้อยกเว้นและเรียกใช้รหัสในนั้นได้
2 การจำแนกประเภทของข้อยกเว้น
2.1 การจำแนกประเภทของข้อยกเว้น
2.1.1 โครงสร้างการสืบทอดของข้อยกเว้น: คลาสพื้นฐานสามารถโยนได้ข้อผิดพลาดและข้อยกเว้นที่สืบทอดได้ที่สามารถถ่ายทอดได้, runtimeException และ ioexception, ฯลฯ และ runtimeException เฉพาะสืบทอด runtimeException
2.1.2 ข้อผิดพลาดและ RuntimeException และคลาสย่อยของพวกเขากลายเป็นข้อยกเว้นที่ไม่ได้ตรวจสอบและข้อยกเว้นอื่น ๆ กลายเป็นข้อยกเว้นที่ตรวจสอบ
2.2 ลักษณะของข้อยกเว้นแต่ละประเภท
2.2.1 ระบบข้อผิดพลาดระบบคลาสข้อผิดพลาดอธิบายข้อผิดพลาดภายในและความอ่อนเพลียของทรัพยากรในระบบปฏิบัติการ Java แอปพลิเคชันไม่ควรโยนวัตถุประเภทนี้ (โดยปกติจะถูกโยนโดยเครื่องเสมือน) หากเกิดข้อผิดพลาดดังกล่าวไม่มีอะไรอื่นที่สามารถทำได้ยกเว้นเพื่อพยายามทำให้โปรแกรมออกอย่างปลอดภัย ดังนั้นเมื่อออกแบบการเขียนโปรแกรมคุณควรให้ความสนใจกับระบบยกเว้นมากขึ้น
2.2.2 ระบบยกเว้นระบบข้อยกเว้นรวมถึงระบบ RuntimeException และระบบที่ไม่ใช่ RuntimeException อื่น ๆ
2.2.2.1 RuntimeException ระบบ RuntimeException รวมถึงการแปลงประเภทที่ไม่ถูกต้องการเข้าถึงอาร์เรย์นอกขอบเขตความพยายามในการเข้าถึงพอยน์เตอร์โมฆะ ฯลฯ หลักการของการจัดการ RuntimeException คือ: หากมีข้อผิดพลาดของโปรแกรมเมอร์ ตัวอย่างเช่นข้อยกเว้นการเข้าถึงที่อยู่นอกขอบเขตของอาร์เรย์สามารถหลีกเลี่ยงได้โดยการตรวจสอบตัวห้อยอาร์เรย์และขอบเขตอาร์เรย์
2.2.2.2 ข้อยกเว้นอื่น ๆ (IOException ฯลฯ ) ข้อยกเว้นเช่นนี้เป็นข้อผิดพลาดภายนอกโดยทั่วไปเช่นการพยายามอ่านข้อมูลจากส่วนท้ายของไฟล์ ฯลฯ นี่ไม่ใช่ข้อผิดพลาดของโปรแกรม แต่เป็นข้อผิดพลาดภายนอกที่เกิดขึ้นในสภาพแวดล้อมแอปพลิเคชัน
2.3 ความแตกต่างจากการจำแนกข้อยกเว้น C ++
2.3.1 ในความเป็นจริงชื่อคลาสของ RuntimeException ใน Java นั้นไม่เหมาะสมเนื่องจากข้อยกเว้นใด ๆ เกิดขึ้นที่รันไทม์ (ข้อผิดพลาดที่เกิดขึ้นระหว่างการรวบรวมไม่ใช่ข้อยกเว้นกล่าวอีกนัยหนึ่งข้อยกเว้นคือการแก้ข้อผิดพลาดที่เกิดขึ้นระหว่างการรันโปรแกรม)
2.3.2 logic_error ใน C ++ เทียบเท่ากับ runtimeException ใน Java ในขณะที่ runtime_error เทียบเท่ากับข้อยกเว้นของประเภทที่ไม่ใช่ runtimeException ใน Java
3. วิธีใช้ข้อยกเว้น
3.1 ประกาศวิธีการโยนข้อยกเว้น
3.1.1 ไวยากรณ์: โยน (ละเว้น)
3.1.2 ทำไมเราต้องประกาศวิธีการโยนข้อยกเว้น? ไม่ว่าจะเป็นวิธีการที่มีข้อยกเว้นมีความสำคัญเท่ากับประเภทของค่าผลตอบแทนของวิธีการ สมมติว่าวิธีการดังกล่าวมีข้อยกเว้น แต่ไม่ได้ประกาศว่าวิธีนี้จะโยนข้อยกเว้นจากนั้นโปรแกรมเมอร์ไคลเอ็นต์สามารถเรียกวิธีนี้โดยไม่ต้องเขียนโค้ดเพื่อจัดการข้อยกเว้น จากนั้นเมื่อมีข้อยกเว้นเกิดขึ้นจะไม่มีตัวควบคุมข้อยกเว้นที่เหมาะสมในการแก้ข้อยกเว้นนี้
3.1.3 เหตุใดข้อยกเว้นที่ถูกโยนจึงจำเป็นต้องมีข้อยกเว้นที่ตรวจสอบ? RuntimeException และข้อผิดพลาดสามารถสร้างได้ในรหัสใด ๆ พวกเขาไม่จำเป็นต้องถูกโยนโดยโปรแกรมเมอร์ เมื่อเกิดข้อผิดพลาดข้อยกเว้นที่สอดคล้องกันจะถูกโยนโดยอัตโนมัติ ข้อยกเว้นที่ตรวจสอบจะถูกโยนโดยโปรแกรมเมอร์ซึ่งแบ่งออกเป็นสองสถานการณ์: โปรแกรมเมอร์ไคลเอ็นต์เรียกฟังก์ชันไลบรารีที่โยนข้อยกเว้น (ยกเว้นฟังก์ชั่นไลบรารีถูกโยนโดยโปรแกรมเมอร์ไลบรารี); โปรแกรมเมอร์ไคลเอนต์โยนข้อยกเว้นด้วยตัวเองโดยใช้คำสั่งโยน เมื่อพบข้อผิดพลาดโปรแกรมเมอร์มักจะไม่มีอำนาจ เมื่อพบกับ RuntimeException จะต้องมีข้อผิดพลาดเชิงตรรกะในโปรแกรมและต้องแก้ไขโปรแกรม (เทียบเท่ากับวิธีการดีบัก); เฉพาะข้อยกเว้นที่ตรวจสอบคือสิ่งที่โปรแกรมเมอร์ใส่ใจและโปรแกรมควรและควรโยนหรือจัดการกับข้อยกเว้นที่ตรวจสอบเท่านั้น
3.1.4 หมายเหตุ: เมธอดคลาสย่อยที่ครอบคลุมวิธีการบางอย่างของคลาสแม่ไม่สามารถโยนข้อยกเว้นได้มากกว่าวิธีการคลาสแม่ ดังนั้นบางครั้งเมื่อออกแบบวิธีการระดับพาเรนต์จะมีการประกาศข้อยกเว้น แต่รหัสจริงเพื่อใช้วิธีการไม่ได้โยนข้อยกเว้น จุดประสงค์ของสิ่งนี้คือเพื่ออำนวยความสะดวกวิธีการย่อยในการเขียนทับวิธีการคลาสแม่
3.2 วิธีโยนข้อยกเว้น
3.2.1 ไวยากรณ์: โยน (ละเว้น)
3.2.2 มีข้อยกเว้นอะไรบ้าง? สำหรับวัตถุข้อยกเว้นประเภทวัตถุมีประโยชน์จริง ๆ เมื่อข้อยกเว้นเป็นประเภทวัตถุและวัตถุข้อยกเว้นนั้นไม่มีความหมาย ตัวอย่างเช่นหากประเภทของวัตถุข้อยกเว้นคือ ClassCastException ชื่อคลาสนี้เป็นข้อมูลที่มีประโยชน์เพียงอย่างเดียว ดังนั้นเมื่อเลือกข้อยกเว้นที่จะโยนสิ่งที่สำคัญที่สุดคือการเลือกชื่อคลาสของข้อยกเว้นที่สามารถอธิบายสถานการณ์ข้อยกเว้นได้อย่างชัดเจน
3.2.3 มักจะมีสองตัวสร้างสำหรับวัตถุข้อยกเว้น: หนึ่งคือตัวสร้างที่ไม่มีพารามิเตอร์; อีกอันคือตัวสร้างที่มีสตริงซึ่งจะใช้เป็นคำอธิบายเพิ่มเติมสำหรับวัตถุข้อยกเว้นนี้นอกเหนือจากชื่อประเภท
3.2.4 สร้างข้อยกเว้นของคุณเอง: เมื่อไม่มีข้อยกเว้นในตัวใน Java ไม่สามารถอธิบายสถานการณ์ข้อยกเว้นได้อย่างชัดเจนคุณต้องสร้างข้อยกเว้นของคุณเอง ควรสังเกตว่าสิ่งเดียวที่มีประโยชน์คือข้อมูลชื่อประเภทดังนั้นอย่าใช้พลังงานในการออกแบบคลาสข้อยกเว้น
3.3 การจับข้อยกเว้นหากไม่มีการประมวลผลข้อยกเว้นจากนั้นสำหรับโปรแกรมอินเตอร์เฟสที่ไม่ใช่กราฟิกโปรแกรมจะถูกยกเลิกและข้อมูลข้อยกเว้นเอาต์พุต สำหรับโปรแกรมอินเทอร์เฟซกราฟิกข้อมูลข้อยกเว้นจะถูกส่งออก แต่โปรแกรมไม่ได้ยกเลิก แต่กลับไปยังลูปการประมวลผลส่วนต่อประสานผู้ใช้
3.3.1 ไวยากรณ์: โมดูลคอนโทรลเลอร์ลองจับและในที่สุด (ละเว้น) จะต้องอยู่ด้านหลังบล็อกลองทันที หากมีการโยนข้อยกเว้นกลไกการควบคุมข้อยกเว้นจะค้นหาคอนโทรลเลอร์ตัวแรกที่มีพารามิเตอร์ตรงกับประเภทข้อยกเว้นจากนั้นป้อนประโยคจับและคิดว่าข้อยกเว้นได้รับการควบคุม การค้นหาคอนโทรลเลอร์จะหยุดลงเมื่อประโยคจับเสร็จ
3.3.1.1 จับข้อยกเว้นหลายข้อ (หมายเหตุไวยากรณ์และลำดับการจับภาพ) (ละเว้น)
3.3.1.2 การใช้งานและกระบวนการจัดการข้อยกเว้นในที่สุด (ละเว้น)
3.3.2 การจัดการข้อยกเว้นทำอะไร? สำหรับ Java เนื่องจากการรวบรวมขยะการจัดการข้อยกเว้นไม่จำเป็นต้องมีการรีไซเคิลหน่วยความจำ อย่างไรก็ตามยังมีแหล่งข้อมูลบางอย่างที่โปรแกรมเมอร์จำเป็นต้องรวบรวมเช่นไฟล์การเชื่อมต่อเครือข่ายและรูปภาพ
3.3.3 วิธีการโยนข้อยกเว้นหรือจับข้อยกเว้นในวิธีนี้หรือไม่? หลักการ: จับและจัดการข้อยกเว้นที่รู้วิธีจัดการและผ่านข้อยกเว้นที่ไม่ทราบวิธีจัดการ
3.3.4 โยนข้อยกเว้นอีกครั้ง
3.3.4.1 ทำไมฉันถึงโยนข้อยกเว้นอีกครั้ง? ในระดับนี้สามารถประมวลผลเนื้อหาได้เพียงบางส่วนและการประมวลผลบางอย่างจะต้องทำให้เสร็จในสภาพแวดล้อมระดับที่สูงขึ้นดังนั้นควรมีข้อยกเว้นอีกครั้ง สิ่งนี้ช่วยให้แต่ละขั้นตอนของตัวจัดการข้อยกเว้นสามารถจัดการข้อยกเว้นที่สามารถจัดการได้
3.3.4.2 บล็อกจับที่สอดคล้องกับบล็อกลองเดียวกันจะถูกละเว้นและข้อยกเว้นที่ถูกโยนจะเข้าสู่ระดับที่สูงขึ้น
4 คำถามอื่น ๆ เกี่ยวกับข้อยกเว้น
4.1 ข้อยกเว้นมากเกินไปก่อนอื่นมันสะดวกมากที่จะใช้ข้อยกเว้นดังนั้นโดยทั่วไปโปรแกรมเมอร์จะไม่เต็มใจที่จะเขียนรหัสเพื่อจัดการกับข้อผิดพลาดอีกต่อไป แต่เพียงแค่โยนข้อยกเว้น นี่เป็นสิ่งที่ผิด สำหรับข้อผิดพลาดที่รู้จักอย่างสมบูรณ์รหัสที่จัดการข้อผิดพลาดดังกล่าวควรเขียนเพื่อเพิ่มความทนทานของโปรแกรม นอกจากนี้ประสิทธิภาพของกลไกที่ผิดปกตินั้นแย่มาก
4.2 การแบ่งข้อยกเว้นจากข้อผิดพลาดทั่วไป สำหรับข้อผิดพลาดทั่วไปรหัสที่เกี่ยวข้องกับข้อผิดพลาดดังกล่าวควรเขียนเพื่อเพิ่มความทนทานของโปรแกรม จำเป็นต้องมีข้อยกเว้นสำหรับข้อผิดพลาดที่ไม่สามารถกำหนดได้ภายนอกและข้อผิดพลาดรันไทม์ที่คาดการณ์ไว้
4.3 ข้อมูลที่มีอยู่ในวัตถุข้อยกเว้นโดยทั่วไปข้อมูลที่เป็นประโยชน์เพียงอย่างเดียวสำหรับวัตถุข้อยกเว้นคือข้อมูลประเภท แต่เมื่อใช้ตัวสร้างสตริงข้อยกเว้นสตริงนี้ยังสามารถใช้เป็นข้อมูลเพิ่มเติมได้ การเรียกใช้วิธี getMessage (), toString () หรือ printStackTrace () ของวัตถุข้อยกเว้นสามารถรับข้อมูลเพิ่มเติมชื่อคลาสและข้อมูลการโทรสแต็กตามลำดับ และหลังมีข้อมูลที่เป็น superset ของอดีต
ข้อยกเว้นที่ใช้กันทั่วไป:
การดำเนินงานที่ไม่ได้รับการสนับสนุนโดย UnsupportedoperationException
การผิดกฎหมายผิดกฎหมายพารามิเตอร์ที่ผิดกฎหมาย
ดัชนี OutboundSexception INDEX Outbound
การผิดกฎหมายผิดกฎหมายรัฐผิดกฎหมาย
มีความแตกต่างบางอย่างระหว่างคำเตือนที่ผิดปกติและสามัญ เมื่อมีข้อยกเว้นเกิดขึ้นในแอปพลิเคชันการไหลของคำสั่งปกติของโปรแกรมการดำเนินการจะถูกขัดจังหวะ กล่าวคือรหัสหลังจากข้อยกเว้นเกิดขึ้นจะไม่ถูกดำเนินการอย่างถูกต้อง มันยังก่อให้เกิดการดำเนินการย้อนกลับของฐานข้อมูล
ในแพลตฟอร์มการพัฒนา Java ข้อยกเว้นรวมถึงข้อยกเว้นที่กำหนดไว้ล่วงหน้าและข้อยกเว้นที่กำหนดเอง ข้อยกเว้นทั้งสองประเภทนี้ช่วยเสริมซึ่งกันและกัน ในฐานะนักพัฒนาโปรแกรมที่มีคุณสมบัติเหมาะสมที่จะใช้ข้อยกเว้นในแอปพลิเคชัน สิ่งนี้สามารถปรับปรุงการโต้ตอบของแอปพลิเคชัน ในขณะเดียวกันก็เป็นข้อกำหนดเบื้องต้นสำหรับการรับรองการทำงานปกติของแอปพลิเคชัน ดังนั้นการจัดการข้อยกเว้นจึงสำคัญมากสำหรับการพัฒนาแอปพลิเคชันที่ยอดเยี่ยม ด้วยเหตุนี้ผู้เขียนจึงเชื่อว่านักพัฒนาโปรแกรมควรมีความเข้าใจในเชิงลึกเกี่ยวกับข้อยกเว้นทั่วไปในแอปพลิเคชัน Java เฉพาะเมื่อคุณเข้าใจข้อยกเว้นทั่วไปเหล่านี้คุณสามารถจัดการข้อยกเว้นที่กำหนดเองได้ดี
1. ประเภทและสาเหตุของข้อยกเว้นทั่วไป
เกี่ยวกับข้อยกเว้นทั่วไปในแอปพลิเคชัน Java ผู้เขียนเชื่อว่านักพัฒนาโปรแกรมควรเข้าใจพวกเขาจากสองด้าน ก่อนอื่นเราจำเป็นต้องรู้ว่ามีข้อยกเว้นแอปพลิเคชัน Java ทั่วไปที่มีและประการที่สองเราจำเป็นต้องรู้ว่าสาเหตุใดที่อาจทำให้เกิดข้อยกเว้นนี้ สิ่งนี้ไม่เพียง แต่ต้องการให้ผู้จัดการโปรแกรมให้ความสนใจกับการสะสมในการทำงานประจำวันของพวกเขา แต่ยังต้องรวบรวมข้อมูลจากช่องทางอื่นหากจำเป็น ผู้เขียนจะทำการวิเคราะห์เกี่ยวกับเรื่องนี้โดยหวังว่ามันจะเป็นความช่วยเหลือบางอย่างสำหรับนักพัฒนาโปรแกรมทุกคน
1. SQLException: ดำเนินการคลาสข้อยกเว้นฐานข้อมูล
แอพพลิเคชั่น Java ส่วนใหญ่ในปัจจุบันพึ่งพาฐานข้อมูลเพื่อเรียกใช้ คลาสนี้จะถูกทริกเกอร์หากเกิดข้อผิดพลาดเมื่อแอปพลิเคชัน Java สื่อสารกับฐานข้อมูล ในเวลาเดียวกันข้อมูลข้อผิดพลาดของฐานข้อมูลจะถูกแสดงต่อผู้ใช้ผ่านคลาสนี้ กล่าวอีกนัยหนึ่งคลาสข้อยกเว้นฐานข้อมูลการดำเนินงานนี้เป็นบริดจ์สำหรับการส่งข้อมูลข้อยกเว้นระหว่างฐานข้อมูลและผู้ใช้ ตัวอย่างเช่นขณะนี้ผู้ใช้แทรกข้อมูลลงในระบบและกำหนดว่าฟิลด์บางอย่างจะต้องไม่ซ้ำกันในฐานข้อมูล เมื่อผู้ใช้แทรกข้อมูลหากค่าของฟิลด์นี้ซ้ำกับบันทึกที่มีอยู่จะละเมิดข้อ จำกัด ที่เป็นเอกลักษณ์ของฐานข้อมูลและข้อความข้อยกเว้นจะถูกปล่อยออกมาจากฐานข้อมูล ข้อมูลนี้อาจไม่สามารถมองเห็นได้สำหรับผู้ใช้เนื่องจากเกิดขึ้นในระดับฐานข้อมูล ในเวลานี้คลาสข้อยกเว้นฐานข้อมูลการดำเนินการนี้จะจับข้อมูลข้อยกเว้นฐานข้อมูลและส่งข้อมูลข้อยกเว้นไปยังเบื้องหน้า ด้วยวิธีนี้ผู้ใช้แผนกต้อนรับสามารถวิเคราะห์สาเหตุของข้อผิดพลาดตามข้อมูลข้อยกเว้นนี้ นี่คือวัตถุประสงค์หลักของคลาสข้อยกเว้นฐานข้อมูลการดำเนินงานนี้ ในแอปพลิเคชัน Java คลาสนี้จะถูกทริกเกอร์เมื่อการดำเนินการฐานข้อมูลทั้งหมดเกิดขึ้นข้อยกเว้น ข้อมูลแจ้งเตือนทั้งหมดของแอปพลิเคชัน Java เองมักจะทั่วไปเกินไปในเวลานี้เพียงแค่บอกว่ามีข้อผิดพลาดในการโต้ตอบกับฐานข้อมูลและไม่มีค่าอ้างอิงมากนัก ในเวลานี้ข้อมูลพรอมต์ฐานข้อมูลมีค่ามากกว่า
2. ClassCastException: ข้อยกเว้นการแปลงชนิดข้อมูล
ในแอปพลิเคชัน Java บางครั้งประเภทข้อมูลจะต้องถูกแปลง การแปลงนี้รวมถึงการแปลงที่แสดงและการแปลงโดยนัย อย่างไรก็ตามไม่ว่าคุณจะแปลงได้อย่างไรคุณต้องปฏิบัติตามข้อกำหนดเบื้องต้นนั่นคือความเข้ากันได้ของชนิดข้อมูล หากหลักการนี้ถูกละเมิดในระหว่างกระบวนการแปลงข้อมูลข้อยกเว้นการแปลงชนิดข้อมูลจะถูกเรียกใช้ ตัวอย่างเช่นในแอปพลิเคชันตอนนี้นักพัฒนาจำเป็นต้องแปลงข้อมูลวันที่ประเภทอักขระเป็นข้อมูลประเภทวันที่ที่สามารถยอมรับได้จากฐานข้อมูล ในเวลานี้พวกเขาจำเป็นต้องควบคุมมันในแอปพลิเคชันเบื้องหน้าและโดยทั่วไปจะไม่มีปัญหา อย่างไรก็ตามหากแอปพลิเคชันเบื้องหน้าขาดการควบคุมที่เกี่ยวข้องเช่นผู้ใช้จะป้อนข้อมูลเดือนและวันเฉพาะเมื่อป้อนวันที่ แต่ไม่มีข้อมูลปี ในเวลานี้ข้อยกเว้นจะปรากฏขึ้นเมื่อแอปพลิเคชันดำเนินการแปลงชนิดข้อมูล จากประสบการณ์ของฉันข้อยกเว้นการแปลงชนิดข้อมูลทำให้เกิดข้อยกเว้นมากขึ้นในการพัฒนาแอปพลิเคชันและยังเป็นข้อยกเว้นระดับต่ำ เพราะในกรณีส่วนใหญ่การบังคับให้ควบคุมชนิดข้อมูลบางอย่างสามารถทำได้ในหน้าต่างแอปพลิเคชัน นั่นคือก่อนที่ประเภทข้อมูลจะถูกแปลงความเข้ากันได้ของชนิดข้อมูลจะมั่นใจได้ ในกรณีนี้มันจะไม่ง่ายที่จะทำให้เกิดข้อยกเว้นการแปลงชนิดข้อมูล หากอยู่ในฟิลด์ที่อนุญาตเฉพาะประเภทตัวเลขสามารถตั้งค่าอักขระอื่นนอกเหนือจากค่าตัวเลขที่ไม่ได้รับอนุญาตให้ป้อน แม้ว่าจะมีกลไกการจัดการข้อยกเว้น แต่แอปพลิเคชันจะไม่ทำงานอย่างไม่ถูกต้อง อย่างไรก็ตามในการพัฒนาที่แท้จริงเราควรคาดการณ์ว่าสาเหตุของข้อผิดพลาดมากที่สุดเท่าที่จะเป็นไปได้และพยายามหลีกเลี่ยงความผิดปกติ
3. NumberFormatexception: ข้อยกเว้นโยนเมื่อสตริงถูกแปลงเป็นประเภทตัวเลข
ในระหว่างกระบวนการแปลงประเภทข้อมูลหากเป็นปัญหาที่เกิดขึ้นในระหว่างกระบวนการแปลงอักขระเป็นการแปลงตัวเลขจะใช้ข้อยกเว้นอิสระในโปรแกรม Java คือ NumberFormatexception ตัวอย่างเช่นเมื่อข้อมูลประเภทอักขระ "123456" ถูกแปลงเป็นข้อมูลตัวเลขจะได้รับอนุญาต อย่างไรก็ตามหากข้อมูลประเภทอักขระมีอักขระที่ไม่ใช่ตัวเลขเช่น 123#56 ข้อยกเว้นจะปรากฏขึ้นเมื่อแปลงเป็นประเภทตัวเลข ระบบจะจับข้อยกเว้นนี้และประมวลผล
มีคลาสข้อยกเว้นทั่วไปมากมายในแอปพลิเคชัน Java หากไม่พบข้อยกเว้นคลาสที่สอดคล้องกันข้อยกเว้นของคลาสบางอย่างไม่ได้รับอนุญาตให้เข้าถึงไฟล์ได้สิ้นสุดลงแล้วไฟล์ไม่พบข้อยกเว้นฟิลด์ไม่พบข้อยกเว้น ฯลฯ โดยทั่วไปนักพัฒนาระบบสามารถตัดสินประเภทของข้อยกเว้นปัจจุบันตามชื่อข้อยกเว้นนี้ แม้ว่ามันจะดี แต่ความทรงจำที่ดีก็ไม่ดีเท่าปากกาที่ไม่ดี เมื่อจำเป็น (โดยเฉพาะอย่างยิ่งเมื่อมีข้อยกเว้นที่กำหนดเอง) ผู้พัฒนาโปรแกรมในที่สุดก็มีรายการข้อยกเว้นอยู่ในมือ ในกรณีนี้ไม่ว่าแอปพลิเคชันจะค้นพบปัญหาในระหว่างการดีบักหรือได้รับการร้องเรียนจากผู้ใช้ในระหว่างการดำเนินการคุณสามารถค้นหาสาเหตุของข้อยกเว้นตามชื่อข้อยกเว้นในเวลา สิ่งนี้จะช่วยให้สามารถแก้ไขข้อยกเว้นในเวลาที่สั้นที่สุดและเรียกคืนการทำงานปกติของแอปพลิเคชัน มาตรการนี้ใช้มาหลายปีแล้วและมีประสิทธิภาพมาก
2. คำแนะนำที่เป็นประโยชน์สำหรับการจัดการข้อยกเว้น
สำหรับข้อยกเว้นฐานข้อมูลการใช้งานแอปพลิเคชัน Java มีเพียงคลาสยกเว้นหนึ่งคลาส ดังนั้นการอาศัยข้อมูลข้อผิดพลาดของแอปพลิเคชัน Java มักจะไม่สามารถช่วยบุคลากรแอปพลิเคชันกำจัดสาเหตุของข้อผิดพลาดได้ คุณสามารถระบุได้ว่าข้อยกเว้นนี้เกิดจากข้อผิดพลาดของแอปพลิเคชันหรือข้อผิดพลาดของฐานข้อมูล เพื่อระบุสาเหตุของปัญหาเพิ่มเติมจะเป็นการดีที่สุดที่จะอธิบายสาเหตุเฉพาะเมื่อกำหนดข้อยกเว้นในระดับฐานข้อมูล ตัวอย่างเช่นแอปพลิเคชันเบื้องหน้าอาจเรียกฟังก์ชั่นฐานข้อมูลหรือขั้นตอน ในเวลานี้การทำงานที่ดีในฟังก์ชั่นฐานข้อมูลหรือกระบวนการสามารถอธิบายสาเหตุเฉพาะของข้อยกเว้นบางอย่าง ตัวอย่างเช่นเมื่อสร้างตารางอื่นตามตารางพื้นฐานบางอย่างฟิลด์บางอย่างไม่สามารถว่างเปล่าได้ ฯลฯ หลังจากอธิบายข้อมูลข้อยกเว้นเหล่านี้อย่างชัดเจนหากคุณพบข้อยกเว้นที่คล้ายกันจริง ๆ การดำเนินการคลาสข้อยกเว้นฐานข้อมูลจะย้อนกลับข้อมูลข้อยกเว้นฐานข้อมูลไปยังผู้ใช้ส่วนหน้า สิ่งนี้จะช่วยให้ผู้ใช้ค้นหาสาเหตุของปัญหาและแก้ไขในเวลาที่สั้นที่สุด แน่นอนว่าต้องมีการประสานงานระหว่างโปรแกรมเมอร์ Java และนักออกแบบฐานข้อมูล
ประการที่สองควรสังเกตว่าข้อยกเว้นไม่ใช่บรรทัดฐาน กล่าวอีกนัยหนึ่งความผิดปกติส่วนใหญ่สามารถกำจัดได้ผ่านการมองการณ์ไกลและการป้องกันที่สมเหตุสมผล หากออกแบบมาเพื่อการดำเนินการสี่จุดคุณสามารถ จำกัด การป้อนค่า 0 ค่าในฟิลด์ Ex-number ในหน้าต่างแอปพลิเคชันเบื้องหน้าเพื่อกำจัดข้อยกเว้นที่เป็นไปได้ในระหว่างการใช้งานแอปพลิเคชัน อย่างไรก็ตามสิ่งนี้มักจะต้องมีนักพัฒนาแอปพลิเคชันที่จะมีประสบการณ์การทำงานที่หลากหลายและมีตรรกะการคิดอย่างเข้มงวด แม้ว่านี่จะเป็นเรื่องยาก แต่ผู้เขียนเชื่อว่านักพัฒนาโปรแกรมควรทำงานอย่างหนักในเรื่องนี้แทนที่จะปล่อยให้ผู้ใช้เป็นคำรับรองของคุณเพื่อให้ผู้ใช้ค้นพบข้อบกพร่องในการออกแบบในแอปพลิเคชัน ผู้เขียนเชื่อว่าข้อยกเว้นได้รับอนุญาตให้โยนได้เฉพาะเมื่อปัจจัยบางอย่างที่อยู่นอกเหนือการควบคุมของโปรแกรมเมอร์ หากนักพัฒนาแอปพลิเคชันสามารถรับรู้ถึงข้อผิดพลาดนี้ได้ แต่ก็ยังไม่ใส่ใจกับมันหรือใช้มาตรการที่มีประสิทธิภาพเพื่อป้องกันความผิดปกตินี้ผู้เขียนจะไม่อนุญาต
arithmeticexception (ข้อยกเว้นกับตัวหาร 0), bufferoverflowexception (ข้อยกเว้นบัฟเฟอร์ล้น), bufferunderflowexception (บัฟเฟอร์ underflow underflow), indexoutofboundsexception (ข้อยกเว้นขาออก), nullpointerexception NegativeArraySizeException, NosuchelementException, SecurityException, SystemException, UndeclaredthrowableException
1. java.lang.nullpointerexception
คำอธิบายของข้อยกเว้นคือ "โปรแกรมพบตัวชี้ว่าง" พูดง่ายๆก็หมายถึงการเรียกวัตถุที่ไม่ได้กำหนดค่าหรือวัตถุที่ไม่มีอยู่นั่นคือทำให้เกิดความสับสนกับการเริ่มต้นของอาร์เรย์ด้วยการเริ่มต้นขององค์ประกอบอาร์เรย์ การเริ่มต้นของอาร์เรย์คือการจัดสรรพื้นที่ที่จำเป็นให้กับอาร์เรย์ องค์ประกอบในอาร์เรย์ที่เริ่มต้นจะไม่อินสแตนซ์และยังคงว่างเปล่าดังนั้นแต่ละองค์ประกอบจะต้องเริ่มต้น (ถ้าคุณต้องการเรียกมัน)
2. java.lang.ClassNotFoundException
คำอธิบายของข้อยกเว้นคือ "คลาสที่ระบุไม่มีอยู่"
3. java.lang.arithmeticexception
คำอธิบายของข้อยกเว้นนี้คือ "ข้อยกเว้นการดำเนินการทางคณิตศาสตร์" ตัวอย่างเช่นหากการดำเนินการเช่นหารด้วยศูนย์ปรากฏขึ้นในโปรแกรมข้อยกเว้นดังกล่าวจะเกิดขึ้น
4. java.lang.arrayIndexoutofboundsexception
คำอธิบายของข้อยกเว้นคือ "ตัวห้อยอาร์เรย์อยู่นอกขอบเขต" โปรแกรมส่วนใหญ่มีการดำเนินงานในอาร์เรย์ ดังนั้นเมื่อโทรอาร์เรย์คุณต้องตรวจสอบอย่างรอบคอบเพื่อดูว่าตัวห้อยที่คุณเรียกว่าเกินช่วงของอาร์เรย์หรือไม่ โดยทั่วไปแล้วการพูดไม่ใช่เรื่องง่ายที่จะทำผิดพลาดดังกล่าวโดยการเรียกจอแสดงผล (นั่นคือการใช้ค่าคงที่โดยตรงกับการเรียกเก็บเงิน) แต่โดยนัย (นั่นคือการใช้ตัวแปรเพื่อเป็นตัวแทนของตัวห้อย) มักจะทำผิดพลาด มีอีกสถานการณ์ที่ความยาวของอาร์เรย์ที่กำหนดไว้ในโปรแกรมจะถูกกำหนดโดยวิธีการเฉพาะบางอย่างและไม่ได้ประกาศล่วงหน้า ในเวลานี้ควรตรวจสอบความยาวของอาร์เรย์ก่อนเพื่อหลีกเลี่ยงข้อยกเว้นนี้
5. java.lang.illegalargumentException
คำอธิบายของข้อยกเว้นนี้คือ "ข้อผิดพลาดของพารามิเตอร์ของวิธีการ" เช่นค่าสามค่าในวิธี G.SetColor (int สีแดง, สีเขียว int, int สีน้ำเงิน) หากมีมากกว่า 255 ข้อยกเว้นนี้จะเกิดขึ้น ดังนั้นเมื่อพบข้อยกเว้นนี้สิ่งที่เราต้องทำคือการตรวจสอบอย่างรวดเร็วว่ามีข้อผิดพลาดในพารามิเตอร์ที่ส่งผ่านในการโทรวิธีหรือไม่
6. java.lang.illegalaccessexception
คำอธิบายของข้อยกเว้นนี้คือ "ไม่มีสิทธิ์การเข้าถึง" ข้อยกเว้นนี้จะเกิดขึ้นเมื่อแอปพลิเคชันต้องการเรียกคลาส แต่วิธีการปัจจุบันไม่มีสิทธิ์การเข้าถึงไปยังชั้นเรียน เมื่อใช้แพ็คเกจในโปรแกรมคุณควรให้ความสนใจกับข้อยกเว้นข้อยกเว้นและ Java นี้
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!