การจัดการข้อยกเว้นใน MVC [วิธี 2 อันดับแรกในการจัดการข้อยกเว้น]

เผยแพร่แล้ว: 2020-12-29

การจัดการข้อยกเว้นใน MVC ส่วนใหญ่จะใช้เมื่อสร้างแอปพลิเคชันในสายงานธุรกิจที่ต้องการข้อกำหนดเฉพาะและเงื่อนไขเฉพาะและมีข้อกำหนดเฉพาะ

มาทำความเข้าใจว่าการจัดการข้อยกเว้นในเชิงลึกคืออะไร และจะช่วยให้คุณใช้งานแอปพลิเคชันของคุณได้อย่างไร

สารบัญ

การจัดการข้อยกเว้นคืออะไร?

เป็นกระบวนการในการจัดการและตอบสนองต่อสภาวะพิเศษที่เกิดขึ้นและต้องใช้วิธีการเฉพาะ สิ่งนี้จะต้องรวมอยู่ในแอปพลิเคชันทางธุรกิจเพื่อเพิ่มผลลัพธ์และให้แน่ใจว่าข้อกำหนดทั้งหมดได้รับการจัดการอย่างเหมาะสม

มีสองวิธีที่สำคัญในการจัดการข้อยกเว้นเหล่านี้

  • วิธีการจับและบล็อก
  • วิธีการจัดการข้อผิดพลาดของแอปพลิเคชัน

อย่างไรก็ตาม นี่ไม่ใช่วิธีการเดียวที่ใช้สำหรับกระบวนการนี้

ที่นี่ เราจะพูดถึงขั้นตอนและเทคนิคต่างๆ ที่คุณสามารถใช้เพื่อจัดการข้อยกเว้นใน MVC

วิธีการจัดการ Try-Catch

วิธี catch และ block ถือเป็นวิธีดั้งเดิมที่ใช้สำหรับ การจัดการข้อยกเว้นใน แอปพลิเคชันที่ใช้ MVC คุณจะบันทึกข้อมูลข้อผิดพลาดโดยใช้วิธีนี้

พยายาม

{ เพิ่มข้อยกเว้น;}

จับ (ชื่อข้อยกเว้น)

{

ส่งคืนมุมมอง (“ข้อผิดพลาด”);

}

คุณป้อนเงื่อนไขข้อยกเว้นในบล็อก try และเพิ่มชื่อข้อยกเว้นสำหรับบล็อก catch เมื่อตรวจพบข้อยกเว้นในบล็อก catch จะส่งคืนข้อผิดพลาดที่กล่าวถึง

นอกจากนี้ยังสามารถใช้เพื่อจัดการและบันทึกข้อผิดพลาดทั้งหมดภายในแอปพลิเคชัน

วิธีการ OnException

เมธอดนี้อนุญาตให้คุณแทนที่เมธอด OnException ภายในคลาสคอนโทรลเลอร์ รหัสข้อผิดพลาด 500 ใช้เพื่อจัดการข้อผิดพลาดที่บันทึกไว้ทั้งหมดซึ่งเป็นผลมาจากการ จัดการ ข้อ ยกเว้นใน MVC

โดยทั่วไป คุณสามารถล็อกและระบุมุมมองของข้อยกเว้นด้วยวิธีนี้โดยไม่ต้องลองวนซ้ำ คุณไม่จำเป็นต้องเปิดใช้งานการกำหนดค่า <customErrors> ใน web.config เพื่อเริ่มต้นด้วยวิธีนี้

HomeController คลาสสาธารณะ: Controller

{

ติดต่อผลการดำเนินการสาธารณะ ()

{

ข้อความสตริง = null;

ViewBag.Message = msg.Length;

กลับดู ();

}

ป้องกันแทนที่โมฆะ OnException (ExceptionContext filterContext)

{

filterContext.ExceptionHandled = จริง;

// บันทึกข้อผิดพลาด!!

//เปลี่ยนเส้นทางไปยังการกระทำ

filterContext.Result = RedirectToAction ("ข้อผิดพลาด", "InternalError");

// OR ส่งคืนมุมมองเฉพาะ

filterContext.Result = ViewResult ใหม่

{

ViewName = “~/Views/Error/InternalError.cshtml”

};

}

}

ดูโค้ดด้านบนแล้ว คุณจะสังเกตเห็นว่า OnException เป็นเมธอด void และใช้อ็อบเจ็กต์ ExceptionContext เป็นอาร์กิวเมนต์

อาร์กิวเมนต์นี้มีข้อมูลทั้งหมดที่จำเป็นสำหรับการบันทึกข้อผิดพลาด หากคุณตั้งค่า ExceptionHandled=true คุณจะสามารถบันทึกการดำเนินการที่สร้างจากคอนโทรลเลอร์เฉพาะได้อย่างง่ายดาย

HandleError แอตทริบิวต์

นี่เป็นอีกวิธีหนึ่งที่นิยมในการจัดการข้อยกเว้นและการจัดการข้อผิดพลาดภายใน MVC ของแอปพลิเคชันของคุณ หากคุณสังเกตเห็นข้อผิดพลาดที่เกิดจากวิธีดำเนินการหรือตัวควบคุม คุณควรใช้วิธีนี้

ด้วยแอตทริบิวต์นี้ คุณสามารถเลือกให้แสดงมุมมองที่กำหนดเองสำหรับข้อยกเว้นเฉพาะได้ สิ่งนี้อาจเกิดขึ้นในวิธีการดำเนินการหรือตัวควบคุม

อีกครั้ง วิธีนี้ใช้เมื่อคุณจัดการข้อผิดพลาดด้วยรหัส 500 คุณไม่สามารถบันทึกข้อยกเว้นโดยใช้วิธีนี้

มีวิธีเฉพาะในการเพิ่มแอตทริบิวต์นี้เพื่อให้ทำงานได้ตามคำสั่งของคุณ คุณควรเพิ่มตัวกรองแอตทริบิวต์ HandleError ภายในเมธอด FilterConfig.RegisterGlobalFilters()

นอกจากนี้ คุณควรตรวจสอบให้แน่ใจว่าโหมดข้อผิดพลาดที่กำหนดเอง <CustomErrors = “on”> ถูกตั้งค่าเป็นเปิดเสมอภายใน web.config ณ จุดนี้ คุณสามารถเพิ่มแอตทริบิวต์ในโหมดแอ็คทีฟได้

HomeController คลาสสาธารณะ: Controller

{

[ข้อผิดพลาดในการจัดการ]

ติดต่อผลการดำเนินการสาธารณะ ()

{

ข้อความสตริง = null;

ViewBag.Message = msg.Length;

กลับดู ();

}

}

รหัสที่เราเพิ่งกล่าวถึงทำงานได้ดีที่สุดสำหรับความต้องการในการจัดการบริบทและข้อยกเว้น

ที่นี่แอตทริบิวต์ได้รับการกำหนดค่าสำหรับวิธีการดำเนินการติดต่อ () เมื่อคอมไพล์กระบวนการแล้ว คุณจะเห็น Error.cshtml แสดงในโหมดมุมมอง

สิ่งนี้จะเกิดขึ้นก็ต่อเมื่อมีข้อยกเว้นเกิดขึ้น นี่คือมุมมองเริ่มต้นในกรณีพิเศษทั้งหมด คุณยังสามารถใช้แอตทริบิวต์นี้เพื่อกำหนดค่าหน้าต่างๆ เพื่อจัดการข้อยกเว้นประเภทต่างๆ

แม้ว่าแอตทริบิวต์นี้จะทำงานได้อย่างสมบูรณ์แบบสำหรับการจัดการข้อผิดพลาดและจัดการการกำหนดค่าทุกประเภท แต่อาจใช้ไม่ได้ทุกที่ เลือกสำหรับบางกรณีที่คุณเชื่อว่าจะช่วยให้การสมัครของคุณ

เมธอดนี้ไม่สนับสนุนข้อยกเว้นการบันทึก มันจัดการเพื่อดักจับข้อยกเว้น HTTP เท่านั้นภายในรหัส 500 ไม่สามารถจับข้อยกเว้นจากตัวควบคุมอื่นได้ ดังนั้นจึงไม่ใช่คุณลักษณะที่คุณสามารถพิจารณาได้สำหรับทุกโอกาสและความต้องการ

สืบทอดจาก HandleError

คุณสามารถใช้วิธีนี้เพื่อจัดการกับข้อยกเว้นได้ วิธีการข้างต้นที่เราพูดถึงไม่อนุญาตให้คุณนำส่วนประกอบกลับมาใช้ใหม่ ซึ่งถือได้ว่าเป็นข้อเสียเปรียบ

คุณไม่สามารถทำงานได้หากคุณต้องเข้ารหัสไว้สำหรับข้อยกเว้นทั้งหมดที่จำเป็นต้องบันทึก

ดังนั้น คุณจะต้องใช้ส่วนขยายนี้ ช่วยให้คุณสามารถรับช่วงจากแอตทริบิวต์ HandleError และใช้ข้ามตัวควบคุมเฉพาะได้ ด้วยเหตุนี้ คุณจึงสามารถจัดการกับข้อยกเว้นได้โดยไม่ต้องเขียนโค้ดบ่อยเกินไป

อ่านเพิ่มเติม: ข้อยกเว้นในการจัดการคำถามสัมภาษณ์

Application_Error เหตุการณ์

Application_Error Event เป็นอีกวิธีหนึ่งในการจัดการข้อผิดพลาดของแอปพลิเคชันและการจัดการข้อยกเว้น ส่วนนี้ต้องการให้คุณควบคุมเหตุการณ์ Application_Error ภายในไฟล์ global.asax

คุณสามารถทริกเกอร์เหตุการณ์นี้สำหรับรหัสข้อผิดพลาดทุกประเภทและ การจัดการข้อยกเว้นใน MVC ทำให้ใช้งานง่ายขึ้นและเป็นหนึ่งในวิธีที่ดีที่สุดในการจัดการข้อยกเว้น

วิธีนี้ใช้วิธีการบันทึกข้อผิดพลาดหลัก ซึ่งสามารถใช้เพื่อจัดการข้อยกเว้นทั้งหมดที่ไม่ได้รับการจัดการภายในแอปพลิเคชัน

การจัดการข้อผิดพลาด HTTP

วิธีการดังกล่าวไม่สามารถจัดการกับข้อยกเว้น HTTP ได้ เรากำลังพูดถึงข้อยกเว้น เช่น “ไม่พบไฟล์” และข้อความแสดงข้อผิดพลาดทั่วไปอื่นๆ ที่คุณจำเป็นต้องได้รับ

คุณจะต้องป้อนรายละเอียดข้อผิดพลาดและรหัสข้อผิดพลาดภายในไวยากรณ์เพื่อจัดการข้อยกเว้นเหล่านี้

คุณจะต้องจดบันทึกรหัสข้อผิดพลาดและข้อความที่เป็นไปได้ทั้งหมดที่คุณน่าจะได้รับโดยเป็นส่วนหนึ่งของแอปพลิเคชัน ก่อนที่คุณจะปล่อยไวยากรณ์

เพื่อเพิ่มพูนความรู้ของคุณเกี่ยวกับแอปพลิเคชันสายงานธุรกิจ และเพิ่มความชำนาญในภาษาโปรแกรม เข้า ร่วม upGrad

ด้วยหลักสูตรที่หลากหลายและทางเลือกทางอาชีพที่หลากหลาย คุณจะเพิ่มโอกาสในการทำงานของคุณ

ติดต่อกับผู้เชี่ยวชาญของเราหรือจองโทรศัพท์กับเราเพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกที่ปรับให้เหมาะกับคุณโดยเฉพาะ

ลงทะเบียนเรียน หลักสูตรวิศวกรรมซอฟต์แวร์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

บทสรุป

เมื่อจัดการกับ ข้อยกเว้นใน MVC คุณต้องตรวจสอบให้แน่ใจว่าวิธีการที่คุณเลือกอนุญาตให้คุณบันทึกข้อผิดพลาดที่เป็นไปได้ทั้งหมด คุณควรจะสามารถนำส่วนประกอบกลับมาใช้ใหม่และจัดการข้อผิดพลาดของแอปพลิเคชันทั้งหมดได้ เรียนรู้เกี่ยวกับการจัดการข้อยกเว้นใน Java

หากคุณต้องการวิธีเดียวในการจัดการข้อยกเว้นที่เป็นไปได้ทั้งหมด คุณควรเลือกใช้ วิธี Global Application_Error ทำให้แน่ใจว่าได้บันทึกข้อผิดพลาดทั้งหมดพร้อมกับ <CustomErrors> และตรวจสอบให้แน่ใจว่าได้บันทึกลงใน Web.Config

ด้วยวิธีนี้ ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังหน้าเฉพาะเมื่อพบข้อผิดพลาด การจัดการข้อยกเว้นเป็นหนึ่งในแนวคิดหลักของการพัฒนาแอปพลิเคชันโดยใช้ ASP.Net MVC

เราหวังว่าบทความนี้มีความเข้าใจอย่างลึกซึ้งในการเรียนรู้เกี่ยวกับ การจัดการข้อยกเว้นใน MVC โปรดสำรวจบล็อกของเราเพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับแอปพลิเคชันต่างๆ

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาแบบฟูลสแตก โปรดดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์แบบฟูลสแตก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการมากกว่า 9 โครงการ และ การมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักที่นำไปปฏิบัติจริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ

มาเป็นนักพัฒนาเต็มรูปแบบ

สมัครเลยตอนนี้สำหรับปริญญาโทด้านวิศวกรรมซอฟต์แวร์