‫ยินดีต้อนรับกลับ.
‫ในวิดีโอนี้ คุณจะได้เรียนรู้วิธีตรวจจับข้อผิดพลาดและทำบางสิ่งเมื่อเกิดข้อผิดพลาดและไม่ทำให้โปรแกรมของคุณขัดข้องหรืออะไรทำนองนั้น
‫ดังนั้นการใช้งานทั่วไปของ catch และสุดท้ายร่วมกันคือการได้รับและใช้ทรัพยากรในบล็อกไตร จัดการกับสถานการณ์พิเศษและบล็อก
‫catch และปล่อยทรัพยากรในบล็อกสุดท้าย
‫และนั่นหมายความว่าเราจะพูดถึงอะไรในวิดีโอนี้
‫ดังนั้นเพื่อให้เกิดข้อผิดพลาด ให้ทำดังต่อไปนี้
‫เราใช้บรรทัดขวาของคอนโซล
‫ป้อน CW แตะสองครั้งและที่นี่ฉันบอกว่าโปรดป้อนตัวเลขและเราก็แค่แจ้งให้ผู้ใช้ของเราป้อนตัวเลขแล้วเราต้องการเก็บไว้ในอินพุตของผู้ใช้ซึ่งจะเป็นตัวแปรสตริงและมันจะอ่าน
‫สิ่งที่ผู้ใช้ต้องป้อนหรือต้องพูดและควรเป็นตัวเลขในตอนท้ายใช่ไหม
‫นั่นคือเป้าหมายที่เรามี
‫แต่ถ้าเราทำสิ่งต่อไปนี้และป้อนข้อมูลของผู้ใช้เป็น int และเราใช้ int, dot pass
‫ดังนั้นคุณจึงเห็นรหัสผ่านแล้วและเราพยายามแยกวิเคราะห์อินพุตของผู้ใช้ที่ผู้ใช้ให้ไว้ที่นี่
‫เราพยายามสร้างจำนวนเต็มออกมา และตอนนี้ถ้าคุณเรียกใช้ โปรดป้อนตัวเลข และระหว่างสาม
‫และโปรแกรมของเราใช้ได้จริง ให้เพิ่มคีย์อ่านดอทคอนโซลที่นี่
‫ดังนั้นเราจึงเห็นได้ดียิ่งขึ้นว่าโปรแกรมยังใช้งานได้ดี
‫ดังนั้นโปรดป้อนหมายเลข
‫ฉันเพิ่งจะเข้าสู่ห้าและโปรแกรมของเรายังคงทำงานอยู่และไม่ขัดข้อง
‫ทุกอย่างเรียบร้อยดี งั้นเรามาเริ่มกันใหม่
‫แต่แทนที่จะป้อนตัวเลข ให้เพิ่มตัวอักษรหรือเขียนข้อความแทน
‫นั่นไม่ใช่.
‫ผ่านเป็นจำนวนเต็ม สิ่งที่เราทำที่นี่ในบรรทัดที่ 16 ในกรณีของฉัน
‫ดังนั้นฉันจะเข้าไปและโปรแกรมของฉันขัดข้องและมันแจ้งว่าข้อยกเว้นในสตริงอินพุตข้อยกเว้นรูปแบบระบบที่จัดการนั้นไม่ได้อยู่ในรูปแบบที่ถูกต้อง
‫ไม่เป็นไร.
‫ดังนั้นสตริงที่ผู้ใช้กำหนดจึงไม่อยู่ในรูปแบบที่ถูกต้องในการแยกวิเคราะห์เป็นจำนวนเต็ม
‫และนั่นคือสิ่งที่เกี่ยวกับข้อยกเว้นรูปแบบ
‫ตอนนี้ เราสามารถจัดการกับมันได้โดยการสร้าง try and catch block
‫สมมติว่าเราใช้ try และที่นี่ คุณจะเห็นว่ามีตัวเลือกให้ใช้
‫ลองจับ.
‫C หรือฉันสามารถใช้การลองแตะสองครั้งและมันจะสร้างการลองจับข้อยกเว้นสำหรับฉัน
‫ตอนนี้สิ่งที่ฉันต้องการจะทำคือฉันต้องการลองใช้โค้ดนั้น และถ้ามันไม่ได้ผล ฉันก็ไม่ต้องการให้โปรแกรมของฉันพัง
‫และนั่นคือสิ่งที่การทดลองทั้งหมดเป็นเรื่องเกี่ยวกับ
‫ดังนั้นไม่ว่าจะเกิดข้อผิดพลาดอะไรก็ตาม ข้อผิดพลาดของโค้ดในแง่ของระหว่างรันไทม์ รหัสข้อผิดพลาดอยู่ที่นี่ จะพยายามดำเนินการ
‫และถ้ามันไม่ได้ผลก็จับ
‫BLOCK จะถูกดำเนินการ
‫ดังนั้นสิ่งที่อยู่ในเนื้อหานี้หรือในวงเล็บปีกกาที่นี่จะถูกดำเนินการ
‫ตอนนี้เรามีแค่การโยนตรงนี้
‫ทีนี้มากำจัดการขว้างกันเพราะมันยังขว้างอยู่
‫Yara ตอนนี้ เรามาเขียนบางอย่างไปที่คอนโซลกันถ้าเกิดข้อผิดพลาดขึ้น
‫ดังนั้นเราจึงพูดบางอย่างเช่นข้อยกเว้นรูปแบบ
‫โปรดป้อนประเภทที่ถูกต้องในครั้งต่อไป
‫และนั่นคือสิ่งที่เรารู้ว่าเป็นประเภทใด
‫ผู้ใช้ทั่วไปจะไม่ทราบว่า
‫ดังนั้นที่นี่คุณจะเขียนบางอย่างเช่น Please don't enter letters แต่เฉพาะตัวเลขหรืออะไรทำนองนั้น
‫ลองมาดูที่นี่อีกครั้ง
‫เรียกใช้ข้อผิดพลาดเป็นข้อผิดพลาดอีกครั้ง แล้วเราก็ได้รับข้อยกเว้นรูปแบบข้อมูลนี้
‫โปรดป้อนประเภทที่ถูกต้องในครั้งต่อไป
‫และโปรแกรมของเราก็ไม่ขัดข้อง ดังนั้นเราจึงไม่พบข้อยกเว้นนี้ในแง่ของโปรแกรมของเราหรือ ID
‫ของเราที่บอกเราว่า มีบางอย่างผิดปกติ และคุณควรจัดการกับโค้ดของคุณให้ดี ใช่ไหม
‫โครงสร้างโดยทั่วไปก็เป็นเช่นนั้น
‫คุณได้ลองแล้ว ดังนั้นคุณจึงลองใช้โค้ดในนี้ซึ่งอาจพบข้อผิดพลาด ซึ่งอาจมีข้อยกเว้น จากนั้นคุณมีบล็อก
‫catch ซึ่งจะดำเนินการเมื่อใดก็ตามที่การทำลายไม่ได้ผล
‫ดังนั้นเมื่อใดก็ตามที่มีข้อผิดพลาด บล็อก catch นี้จะถูกดำเนินการ
‫สิ่งที่เรามีที่นี่เป็นสิ่งที่จับได้โดยมีข้อยกเว้น
‫ข้อยกเว้นคือข้อผิดพลาดทั่วไป
‫ดังนั้นมันอาจเป็นข้อยกเว้นประเภทใดก็ได้ แต่ถ้าเราพบข้อผิดพลาดนั้นจริง ๆ ให้กำจัดรหัสนี้
‫เราจะเห็นว่าเราสร้างข้อยกเว้นประเภทใด
‫ผมจะป้อนอะไรบางอย่าง เหมือนกับว่าผมป้อนสตริงอะไรลงไป
‫และที่จริงแล้วไม่มีอะไรเกิดขึ้นเพราะเราไม่โยน
‫หยุดกันเถอะ
‫มาโยนทิ้งกันอย่างที่เห็นก่อนหน้านี้
‫เพียงแค่โยนข้อผิดพลาดและเราเรียกใช้อีกครั้ง
‫ฉันเพิ่งป้อนบางสิ่งที่นี่และมันแจ้งข้อยกเว้นการส่งต่อระบบ
‫ดังนั้นเราจึงมีข้อมูลที่แม่นยำขึ้นเล็กน้อยเกี่ยวกับข้อยกเว้นที่แท้จริง
‫ตอนนี้เรารู้แล้วว่า โอเค มันเป็นข้อยกเว้นของรูปแบบ ดังนั้นเราจึงควรใช้ข้อยกเว้นรูปแบบที่นี่แทนข้อยกเว้น
‫มีข้อยกเว้นมากมายที่นี่
‫แต่สิ่งที่เราใช้ที่นี่คือข้อยกเว้นรูปแบบ
‫ดังที่คุณเห็นในที่นี้ มีคลาสที่เรียกว่า system ข้อยกเว้นของรูปแบบนั้น และข้อยกเว้นที่ถูกส่งออกไปเมื่อรูปแบบของอาร์กิวเมนต์ไม่ถูกต้อง
‫หรือเมื่อสตริงรูปแบบคอมโพสิตมีรูปแบบไม่ดี
‫นั่นคือสิ่งที่เรามีที่นี่
‫ลองกำจัดการโยนนี้และ
‫สบายดีกับสิ่งนั้น
‫ทีนี้ก็เลยพาดพิงถึงยุคอื่นกัน
‫ทีนี้มาสร้างตัวเลขที่ยาวมากกัน
‫สิ่งที่ไม่สามารถเข้ากับสตริงได้
‫เพราะอย่างที่คุณอาจเดา หรืออย่างที่คุณอาจจำได้ สตริงมีช่องว่างเฉพาะจำนวนหนึ่งเท่านั้น
‫สมมุติว่าผมไม่แน่ใจว่าตัวเลขนี้มีกี่ตัว แต่สมมุติว่ามีเพียงจำนวนนี้เท่านั้นที่สามารถเก็บเป็นจำนวนเต็มได้
‫ทั้งหมดนี้จะไม่ได้ผลเพราะมันล้น
‫ดังนั้นจึงมีข้อมูลมากเกินไปสำหรับสตริงที่จะจัดการ
‫ดังนั้นถ้าฉันป้อนตอนนี้
‫ฉันได้รับข้อยกเว้นระบบโอเวอร์โฟลว์อินพุต
‫ดังนั้นเราจึงอยู่ที่นี่
‫ข้อยกเว้นระบบล้น
‫คุณใหญ่หรือเล็กเกินไปสำหรับ RN 32
‫ไม่เป็นไร.
‫นั่นคือสิ่งที่ฉันพูด
‫และตอนนี้เราต้องจับข้อยกเว้นนั้นด้วย
‫ดังนั้น มีสองวิธีที่เราจะจัดการกับมันได้
‫ดังนั้นไม่ว่าเราจะใช้ข้อยกเว้นที่แตกต่างกันที่นี่และเราเพียงแค่ใช้ข้อยกเว้น
‫ดังนั้นเราจึงจัดการกับข้อยกเว้นอื่นๆ ทั้งหมดที่มีโดยทั่วไป และเราเพียงแค่บอกว่าคอนโซลดอท
‫เส้นสีแดง ข้อยกเว้นทั่วไป มีบางอย่างผิดพลาด เป็นต้น
‫ลองสร้างตัวเลขที่ยาวมาก ๆ กันอีกครั้งแบบนี้แล้วใส่ลงไป
‫และเราเห็นว่าเรามีข้อยกเว้นทั่วไป แม้ว่าจะเป็นข้อยกเว้นโอเวอร์โฟลว์ก็ตาม
‫เพื่อให้คุณสามารถจัดการกับมันได้
‫ดังนั้น หากคุณไม่ทราบข้อยกเว้นประเภทต่างๆ ทั้งหมดที่คุณมี หรือคุณไม่ต้องการจับข้อยกเว้นทั้งหมดทีละรายการ
‫คุณสามารถทำได้ด้วยวิธีนี้ หรือคุณอาจจะแม่นยำและเพียงแค่ป้อนข้อยกเว้นโอเวอร์โฟลว์ที่ถูกต้อง
‫ตอนนี้ก็ใช้งานได้แล้ว และคุณจะเห็นข้อยกเว้นระบบล้น
‫มาลองกันใหม่อีกครั้ง และให้ใส่ตัวเลข และสร้างตัวเลขที่ยาวมากที่นี่
‫และเรายังคงได้รับข้อยกเว้นทั่วไปเนื่องจากเราไม่ได้ป้อนข้อยกเว้นล้นข้อความอื่น
‫ตัวเลขยาวหรือสั้นเกินไปสำหรับเลข 32
‫เลยมาดูใหม่กัน
‫และหมายเลขข้อยกเว้นล้นยาวหรือสั้นเกินไปสำหรับใน 32
‫ไม่เป็นไร.
‫นี่คือวิธีที่เราสามารถตรวจจับข้อยกเว้นโดยทั่วไปได้
‫และหากมีข้อยกเว้นอื่นๆ ที่สามารถเรียกใช้ได้ อย่างที่คุณเห็น มีข้อยกเว้นที่เป็นโมฆะอาร์กิวเมนต์
‫เรามาดูกันว่ามันหมายถึงอะไร
‫ถ้าเราได้สิ่งนั้นและเราเห็น
‫ข้อยกเว้น.
‫โปรดป้อนประเภทที่ถูกต้องในครั้งต่อไป
‫ดังนั้นแม้ว่ามันจะว่างเปล่า ในกรณีของเรา เราไม่ได้รับข้อยกเว้นที่เป็นโมฆะนี้ เนื่องจากอินพุตของเรา
‫แม้ว่าเราจะไม่ป้อนอะไรเลย แต่ก็ยังมีสตริงว่างซึ่งไม่ใช่ค่าว่าง
‫ดังนั้นเราจึงไม่ดำเนินการตามข้อยกเว้นที่แท้จริงนี้
‫ดังที่คุณเห็นที่นี่ เมื่อใดก็ตามที่คุณพยายามรันโค้ด Intel จะให้ข้อมูลบางส่วนแก่คุณที่นี่
‫นั่นจึงมีประโยชน์จริงๆ
‫คุณจะเห็นว่ามีอาร์กิวเมนต์เป็นโมฆะข้อยกเว้น ข้อยกเว้นรูปแบบ และข้อยกเว้นโอเวอร์โฟลว์
‫ดังนั้นเราจึงสามารถเพิ่มข้อยกเว้นอื่นที่นี่และเรียกอาร์กิวเมนต์หนึ่งว่าเป็นข้อยกเว้นที่เป็นโมฆะหรือข้อยกเว้นของอาร์กิวเมนต์เป็นโมฆะ
‫และเราพูดบางอย่างเช่นอาร์กิวเมนต์ null ข้อยกเว้น
‫ค่าว่างเปล่าในขณะนี้
‫ดังนั้นเพื่อที่จะได้เข้าสู่ยุคนี้ เราจะต้องใช้ค่าว่าง ซึ่งเรายังไม่ได้กล่าวถึง แต่เราจะดำเนินการในภายหลัง
‫และถ้าเรามีพวกเขา คุณสามารถลองทำสิ่งนั้นได้
‫ดังนั้น หากคุณได้เห็นวิดีโอที่โดดเด่นแล้ว คุณสามารถลองเรียกใช้ข้อผิดพลาดนั้นได้
‫ไม่เป็นไร.
‫ตอนนี้คุณได้เห็นวิธีใช้ try catch แล้ว
‫และตอนนี้มีอีกสิ่งหนึ่งที่ฉันอยากจะแสดงให้คุณเห็นในวิดีโอนี้ ซึ่งในที่สุดและในที่สุดก็ทำแบบนั้น
‫ดังนั้นคุณใช้คีย์เวิร์ดสุดท้ายแล้วใช้วงเล็บปีกกาอีกครั้งและภายในบล็อกโค้ดนั้น ดังนั้นภายในเนื้อหานั้น
‫คุณป้อนโค้ดที่ควรดำเนินการเมื่อใดก็ตาม
‫ลองและจับของเราทำอย่างนั้น
‫ไม่สำคัญว่าจะเรียกใช้ข้อผิดพลาดหรือข้อผิดพลาดไม่ทำงาน
‫ไม่มีข้อผิดพลาด
‫สุดท้ายเราจะยังคงถูกเรียก
‫อย่างนี้จึงเรียกว่า
‫นั่นก็หมายความเช่นกัน
‫เราจะเห็นในวินาที
‫ลองวิ่งเข้าไปในลูกศรและดูว่าเรามีข้อยกเว้นสี่นาทีแล้วเราเห็นสิ่งนี้ถูกเรียกต่อไปและนั่นคือบล็อกสุดท้ายของเรา
‫และแนวคิดเบื้องหลังบล็อกนี้คือ ตัวอย่างเช่น หากคุณพยายามเริ่มการเชื่อมต่ออินเทอร์เน็ต
‫หรือหากคุณพยายามเขียนลงในไฟล์ อาจมีข้อผิดพลาดเกิดขึ้นได้ในที่สุด
‫สมมติว่าการเชื่อมต่ออินเทอร์เน็ตขาดหรือคุณไม่มีสิทธิ์เข้าถึงไฟล์ที่คุณต้องการเขียนหรือข้อยกเว้นอื่นๆ
‫ที่อาจเกิดขึ้นได้ และคุณต้องการปิดการเชื่อมต่อหรือไฟล์ด้วยวิธีใดวิธีหนึ่ง
‫ดังนั้นคุณจึงเปิดไฟล์และตอนนี้คุณพยายามเขียนลงในไฟล์นั้นและหลังจากที่คุณได้เขียนลงในไฟล์นั้นภายในบล็อกการลองและอาจจะใช้ได้
‫บางทีมันอาจจะไม่ได้ผล แต่สิ่งที่คุณต้องทำคือปิด ไฟล์อีกครั้ง หรือคุณพยายามดาวน์โหลดบางอย่างจากอินเทอร์เน็ต
‫และหากใช้งานได้หรือไม่ได้ผล ก็ไม่สำคัญ
‫คุณต้องปิดการเชื่อมต่ออินเทอร์เน็ตหลังจากนั้น และนั่นคือสิ่งที่คุณจะทำในไฟล์
‫บล็อก และนั่นก็สะดวกและสำคัญมากเมื่อทำงานกับประเภทเอาต์พุตอินพุต หรือใช่ โดยทั่วไปกับการเชื่อมต่อกับอินเทอร์เน็ต
‫บลูทูธ หรืออะไรก็ตาม
‫อย่างที่คุณเห็น มีหลายสิ่งที่ควรรู้เกี่ยวกับการลองจับ แต่สิ่งสำคัญที่สุดที่คุณเคยเห็นแล้ว
‫ตอนนี้คุณรู้วิธีใช้แล้ว ลองรู้วิธีใช้ ดูวิธีหาข้อยกเว้น
‫ในบางกรณีก็ไม่ชัดเจน
‫ดังนั้นในบางกรณี คุณจะไม่ตรวจสอบว่าสามารถเรียกใช้ข้อยกเว้นประเภทใดได้
‫แต่ถ้าคุณพบข้อยกเว้นในโค้ดของคุณ คุณจะรู้ว่าข้อยกเว้นประเภทใดที่เป็นเช่นนั้น
‫แนวคิดก็คือ Microsoft Visual Studio จะบอกคุณว่าข้อยกเว้นใดเป็นข้อยกเว้น
‫จากนั้นคุณควรพยายามจับข้อยกเว้นนั้นหรือเพียงแค่ใช้ ประเภทข้อยกเว้นทั่วไป okeydokey
‫ดังนั้นตอนนี้จึงเป็นความท้าทายเล็กๆ น้อยๆ สำหรับคุณ เพราะจะต้องมีการท้าทายเล็กๆ น้อยๆ อยู่เสมอ
‫ไม่เช่นนั้นคุณอาจจะรู้สึกเบื่อเล็กน้อย สบายดี หรืออาจจะขี้เกียจนิดหน่อย
‫เป็นสิ่งสำคัญมากที่คุณจะต้องพยายามพิมพ์รหัสด้วย และตรวจสอบด้วยตัวคุณเอง
‫ดังนั้นความท้าทายเล็กน้อยคือโปรดไปข้างหน้าและหารด้วยศูนย์
‫ง่ายมาก
‫แค่ลองหารด้วยศูนย์และใช้ตัวแปรสองตัวสำหรับสิ่งนั้น
‫เอาล่ะ ไปข้างหน้าและลองเพียงแค่นั้น
‫ผมจะลองหารด้วยศูนย์
‫ฉันจะใช้จำนวนเต็มสองตัวและไม่มี
‫หนึ่งจะเป็นห้า และ n ไม่มีสองจะเป็นศูนย์
‫และตอนนี้ฉันกำลังจะใช้ผลลัพธ์ที่ได้จะถูกป้อนที่นี่
‫ผลลัพธ์เท่ากับหมายเลขหนึ่งหารด้วยหมายเลขสอง
‫ทีนี้มาลองกันโดยไม่ต้องพยายามจับจริง ๆ ก่อนที่เราจะใช้ try and catch
‫มาเริ่มกันเลย
‫โปรดป้อนตัวเลขแล้วหารด้วยข้อยกเว้น 0 และเราหวังว่าคุณจะจัดการเรื่องนี้
‫ตอนนี้เรามาเพิ่มลองและจับกัน
‫ดังนั้นลองหรือทำให้ง่ายขึ้นจริงๆ
‫เข้าไปกันเถอะ
‫ลองที่นี่และใช้แท็บคู่บล็อก
‫และตอนนี้ในความพยายาม ฉันต้องการเรียกใช้สิ่งนั้น
‫และถ้ามันไม่ได้ผล ผมก็แค่อยากเขียนอะไรแบบ C double
‫คุณไม่สามารถหารด้วยศูนย์ได้
‫และตอนนี้นี้
‫ข้อยกเว้นที่เราเพิ่งมีก็คือเราจะดู
‫หารด้วยศูนย์ พยายามหารด้วยศูนย์ เรียกว่าหารด้วยข้อยกเว้นศูนย์
‫ดังนั้นหากคุณต้องการหาสิ่งนั้น คุณสามารถหามันได้ข้างล่างนี้
‫ฉันก็เลยจะใช้สิ่งนั้น
‫ฉันจะแทนที่ข้อยกเว้นด้วยการหารด้วยข้อยกเว้นศูนย์
‫ทีนี้ลองรันโค้ดนั้นอีกครั้ง
‫โปรดป้อนตัวเลขที่มาจากเมื่อก่อนแล้วบอกว่าสามารถหารด้วยศูนย์ได้
‫ถูกต้อง.
‫ดังนั้น ฉันหวังว่าคุณจะลองทำดู และหวังว่าคุณจะทำสำเร็จ
‫และตอนนี้คุณสามารถดูได้ว่าคุณสามารถสร้างความพยายามและจับสิ่งนี้ได้อย่างไร
‫และในวิดีโอหน้า เราจะใช้ของแปลก ๆ มากกว่านี้
‫แล้วเจอกันนะ