ปรากฏการณ์ที่ผิดปกติของโปรแกรม Java ที่ทำงานเรียกว่าการเรียกใช้ข้อผิดพลาด ตามธรรมชาติของพวกเขามันสามารถแบ่งออกเป็นสองประเภท: ข้อผิดพลาด (ข้อผิดพลาด) และข้อยกเว้น (ข้อยกเว้น); พวกเขามีคลาสหลักทั่วไป (รวมถึงคลาสหลักระดับบนสุดของข้อยกเว้นทั้งหมด): throwable
โครงสร้างคลาสข้อยกเว้น
ข้อผิดพลาด
ข้อผิดพลาดถูกสร้างขึ้นโดย JVM และถูกทอดทิ้งโดยไม่มีการประมวลผล ข้อผิดพลาดดังกล่าวมักจะไม่เกี่ยวข้องกับรหัสและการดำเนินการที่ดำเนินการและเป็นปัญหาที่ค่อนข้างร้ายแรงในเครื่องเสมือนและไม่สามารถแก้ไขได้โดยโปรแกรมเอง (ข้อผิดพลาดทั่วไปรวมถึงลูปที่ตายแล้วการรั่วไหลของหน่วยความจำ ฯลฯ )
ข้อผิดพลาดทั่วไปคือข้อผิดพลาดของเครื่องเสมือน Java (VirtualMachineERROR) เมื่อ JVM ไม่ได้มีทรัพยากรหน่วยความจำอีกต่อไปในการดำเนินการต่อไปจะมีการดำเนินการ outofMemoryError อีกต่อไป เมื่อข้อยกเว้นเหล่านี้เกิดขึ้นเครื่องเสมือน Java (JVM) โดยทั่วไปเลือกที่จะยุติเธรด
ข้อยกเว้น
มีการใช้ข้อยกเว้นเป็นวัตถุและถูกทิ้งหรือประมวลผลโดยโปรแกรม Java; โดยปกติแล้วสาเหตุของข้อยกเว้นคือ: รหัสหรือรหัสการโทรไม่ถูกต้องทรัพยากรระบบปฏิบัติการไม่พร้อมใช้งานและห้องสมุดรันไทม์ภาษาทั่วไปพบอุบัติเหตุ
ข้อยกเว้นถูกแบ่งออกเป็นข้อยกเว้นรันไทม์ที่สร้างขึ้นโดยเครื่องเสมือน (RuntimeException เช่นตัวชี้ที่เป็นโมฆะอาร์เรย์ออกจากขอบเขต) และข้อยกเว้นที่ไม่ใช่ตามกฎหมายที่เกิดจากอุบัติเหตุโปรแกรม (เช่น iOException);
ข้อยกเว้นรันไทม์: โปรแกรมสามารถเลือกที่จะจับภาพและประมวลผลหรือโยนมันโดยตรงโดยไม่ต้องประมวลผล ข้อยกเว้นรันไทม์ทั่วไปรวมถึงอัลกอริทึมล้น (เกินช่วงนิพจน์ตัวเลข) ตัวหารคือศูนย์หน่วยความจำล้นตัวชี้โมฆะพารามิเตอร์ที่ไม่ถูกต้อง ฯลฯ ข้อยกเว้นดังกล่าวคือข้อผิดพลาดในการเขียนโปรแกรมในโปรแกรมเอง คุณสามารถปรับทิศทางการทำงานของรหัสข้อยกเว้นเพื่อให้โปรแกรมทำงานจนกว่าจะสิ้นสุดตามปกติ
ข้อยกเว้นที่ไม่ใช่ตามกฎหมาย: ข้อยกเว้นที่ไม่คาดคิดของประเภท RuntimeException เรียกว่าข้อยกเว้นที่ไม่ใช่ตามกฎหมาย จากมุมมองของไวยากรณ์ของโปรแกรมพวกเขาเป็นข้อยกเว้นที่ต้องดำเนินการ หากไม่ได้ดำเนินการโปรแกรมไม่สามารถรวบรวมและผ่านได้ ข้อยกเว้นที่ไม่ใช่ตามกฎหมายทั่วไป ได้แก่ IOException เช่น: ไม่พบไฟล์ทรัพยากร ฯลฯ ซึ่งหมายความว่าโปรแกรมไม่สามารถดำเนินการได้สำเร็จเมื่อเผชิญกับสถานการณ์ที่ไม่คาดคิด
หมายเหตุ: ความแตกต่างระหว่างข้อยกเว้นและข้อผิดพลาด-การรับรู้สามารถจัดการได้โดยโปรแกรมเอง แต่ไม่สามารถจัดการข้อผิดพลาดได้
ข้อยกเว้นที่ตรวจสอบได้และไม่สามารถตรวจสอบได้
ข้อยกเว้น Java (ErrorandExceptions) สามารถแบ่งออกเป็นสองหมวดหมู่อื่น ๆ ตามที่โปรแกรมสามารถรวบรวมและผ่าน: ตรวจสอบข้อยกเว้นและข้อยกเว้นที่ไม่ได้ตรวจสอบ
สามารถตรวจสอบข้อยกเว้นได้
สามารถตรวจสอบข้อยกเว้นได้: สอดคล้องกับข้อยกเว้นที่ไม่ใช่ตามกฎหมายคอมไพเลอร์สามารถตรวจสอบข้อผิดพลาดที่คาดหวังเมื่อรวบรวมโปรแกรม ข้อยกเว้นนี้จะต้องจัดการ มีสองวิธีในการจัดการกับมัน: คำสั่งลองจับจับข้อยกเว้นหรือประโยคการโยนประกาศการโยนข้อยกเว้นและประเภทข้อยกเว้นจะถูกประกาศนอกส่วนหัวของวิธีการ (โดยใช้ข้อยกเว้นการโยน) และผู้โทรสามารถเลือกที่จะจัดการข้อยกเว้นที่ได้รับ
เมื่อพูดถึงวิธีการจัดการสองวิธีนี้เราต้องพูดคุยเกี่ยวกับคำหลัก 5 คำของการจัดการข้อยกเว้น Java: ลองจับในที่สุดโยนโยนโยนโยน
1. ใช้คำสั่งลองจับเพื่อประมวลผลการจับภาพ (ส่วนหัวของวิธีการไม่จำเป็นต้องประกาศ)
สามแถลงการณ์บล็อกของการลองจับและในที่สุดก็ไม่สามารถปรากฏตัวเพียงลำพัง ทั้งสามสามารถรวมกันเป็นลองจับ/ลอง-คว้า/ลองชนะเลิศ
อาจมีหลายบล็อกการจับและในเวลานี้หนึ่งในรหัสจับบล็อกสามารถจับคู่จากบนลงล่างเท่านั้น
ในที่สุดตัวแปรส่วนใหญ่ไม่สามารถเข้าถึงได้ซึ่งกันและกันในบล็อกคำสั่งสามบล็อก
ในส่วนนี้ชุดค่าผสมลองใช้เพื่อจัดการข้อยกเว้นที่ตรวจสอบได้โยนข้อยกเว้นขึ้นไปตัวอย่าง:
สาธารณะ xmlreaderhdu (สตริง xmlfile) {super (); this.xmlfile = xmlfile; this.filename = staticConfig.umlPathPrefixhdu; ลอง {saxReader reader = new SaxReader (); เอกสาร dom = reader.read (xmlfile); root = dom.getRootelement ();} catch (Exception e1) {handle1 …} catch2. ใช้ประโยคโยนเพื่อประกาศการขว้าง
ก่อนอื่นให้ใช้การโยนภายในร่างกายวิธีการโยนข้อยกเว้น;
จากนั้นวิธีการประกาศออกไปนอกหัวและโยนข้อยกเว้นที่โยนเข้าไปข้างในโดยใช้การโยน;
ตัวอย่างที่ 1: ลองจับกับข้อยกเว้น
สาธารณะ xmlreaderhdu (สตริง xmlfile) โยนข้อยกเว้น {super (); this.xmlfile = xmlfile; this.filename = staticConfig.umlPathPrefixhdu; ลอง {saxReader reader = new SaxReader (); เอกสาร DOM = reader.read (xmlfile); root = dom.getRootelement ();} catch (Exception e1) {โยนข้อยกเว้นใหม่ (e1);ตัวอย่างที่ 2: ข้อยกเว้นที่กำหนดเอง
รายการส่วนตัว <Esecase> Readucinformation () โยนข้อยกเว้น {ถ้า (e1.hascontent ()) {ถ้า (e1.element ("ชื่อ"). getText (). เท่ากับ ("precondition")) {uc.setPrecondition ข้อผิดพลาด");}}}ไม่สามารถตรวจสอบข้อยกเว้นได้
ข้อยกเว้นที่ไม่สามารถตรวจสอบได้: รวมข้อผิดพลาดข้อผิดพลาดและข้อยกเว้นรันไทม์ runtimeException
ข้อยกเว้นรันไทม์สามารถส่งผ่านระหว่างการรวบรวมโปรแกรม ไม่สามารถตรวจพบได้ผ่านไวยากรณ์คงที่ซึ่งฟังก์ชั่นอาจทำให้เกิดข้อยกเว้น เฉพาะเมื่อพบข้อยกเว้น (นั่นคือขึ้นอยู่กับสถานะรันไทม์มันจะถูกกำหนดโดยสถานะรันไทม์);
คุณสามารถเลือกที่จะจับภาพการประมวลผลหรือแสดงผล (MustBecaughtordeclearedTobethrown) ข้อยกเว้นเหล่านี้โดยทั่วไปเกิดจากข้อผิดพลาดของลอจิกของโปรแกรมและโปรแกรมควรหลีกเลี่ยงข้อยกเว้นดังกล่าวมากที่สุดเท่าที่จะทำได้จากมุมมองเชิงตรรกะ
สรุป
ข้างต้นคือทั้งหมดที่เกี่ยวกับการวิเคราะห์ความรู้พื้นฐานของข้อยกเว้น Java ในบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!