การจัดการข้อยกเว้นใน 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 โครงการหลักที่นำไปปฏิบัติจริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ
