คำถามติดแท็ก error-handling

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

11
วิธีการที่ทันสมัยในการจัดการข้อผิดพลาด ...
ฉันไตร่ตรองปัญหานี้มาระยะหนึ่งแล้วและพบว่าตัวเองกำลังค้นหาคำเตือนและความขัดแย้งอยู่เรื่อย ๆ ดังนั้นฉันจึงหวังว่าจะมีคนสรุปผลได้ดังต่อไปนี้: ชอบข้อยกเว้นเกี่ยวกับรหัสข้อผิดพลาด เท่าที่ฉันทราบจากการทำงานในอุตสาหกรรมเป็นเวลาสี่ปีการอ่านหนังสือและบล็อก ฯลฯ แนวทางปฏิบัติที่ดีที่สุดในปัจจุบันสำหรับการจัดการข้อผิดพลาดคือการโยนข้อยกเว้นแทนที่จะส่งคืนรหัสข้อผิดพลาด (ไม่จำเป็นต้องเป็นรหัสข้อผิดพลาด แต่ ประเภทที่แสดงถึงข้อผิดพลาด) แต่สำหรับฉันนี่ดูเหมือนจะขัดแย้ง ... การเข้ารหัสไปยังอินเตอร์เฟสไม่ใช่การนำไปใช้งาน เราใช้รหัสในส่วนต่อประสานหรือบทคัดย่อเพื่อลดการแต่งงาน เราไม่ทราบหรือต้องการทราบประเภทและการนำไปใช้งานของอินเทอร์เฟซที่เฉพาะเจาะจง แล้วเราจะรู้ได้อย่างไรว่ามีข้อยกเว้นอะไรบ้างที่เราควรจับตา? การใช้งานอาจมีข้อยกเว้นแตกต่างกัน 10 ข้อหรือไม่สามารถทิ้งได้ เมื่อเราได้รับการยกเว้นแน่นอนว่าเรากำลังตั้งสมมติฐานเกี่ยวกับการนำไปปฏิบัติ เว้นแต่ - ส่วนต่อประสานมี ... ข้อกำหนดข้อยกเว้น บางภาษาอนุญาตให้นักพัฒนาระบุว่าวิธีการบางอย่างมีข้อยกเว้นบางอย่าง (เช่น Java ใช้throwsคำหลัก) จากมุมมองของรหัสการโทรสิ่งนี้ดูดี - เรารู้อย่างชัดเจนว่าข้อยกเว้นใดที่เราอาจต้องตรวจจับ แต่ - ดูเหมือนว่าจะแนะนำ ... นามธรรมรั่วไหล ทำไมอินเตอร์เฟสควรระบุข้อยกเว้นที่สามารถส่งออกได้ จะเกิดอะไรขึ้นถ้าการนำไปปฏิบัติไม่จำเป็นต้องมีข้อยกเว้นหรือต้องการโยนข้อยกเว้นอื่น ๆ ไม่มีทางที่ระดับอินเตอร์เฟสจะทราบว่ามีข้อยกเว้นใดที่การนำไปปฏิบัติอาจต้องการทิ้ง ดังนั้น... สรุป เหตุใดจึงมีข้อยกเว้นที่ต้องการเมื่อพวกเขา (ในสายตาของฉัน) ขัดแย้งกับแนวทางปฏิบัติที่ดีที่สุดของซอฟต์แวร์ และหากรหัสข้อผิดพลาดแย่มาก (และฉันไม่จำเป็นต้องขายในข้อผิดพลาดของรหัสข้อผิดพลาด) จะมีทางเลือกอื่นหรือไม่ ปัจจุบัน …

14
ทำไม 0 จึงเป็นเท็จ
คำถามนี้อาจฟังดูเป็นใบ้ แต่ทำไม0ประเมินfalseและค่าอื่น ๆ [จำนวนเต็ม] trueเป็นภาษาโปรแกรมส่วนใหญ่ การเปรียบเทียบสตริง เนื่องจากคำถามดูเหมือนจะง่ายเกินไปฉันจะอธิบายตัวเองมากกว่านี้ก่อนอื่นอาจเห็นได้ชัดจากโปรแกรมเมอร์ทุกคน แต่ทำไมไม่มีภาษาการเขียนโปรแกรม - อาจมี แต่ไม่มี ฉันใช้ - ซึ่งเป็น0ค่าที่ประเมินtrueและ [จำนวนเต็ม] อื่น ๆ เพื่อfalseที่ไหน คำพูดหนึ่งอาจดูสุ่ม แต่ฉันมีตัวอย่างเล็ก ๆ น้อย ๆ ที่มันอาจเป็นความคิดที่ดี ก่อนอื่นเราลองมาดูตัวอย่างของการเปรียบเทียบสามสายผมจะเอา C มาstrcmpเป็นตัวอย่าง: โปรแกรมเมอร์ที่ลอง C เป็นภาษาแรกของเขาอาจถูกล่อลวงให้เขียนโค้ดต่อไปนี้: if (strcmp(str1, str2)) { // Do something... } เนื่องจากstrcmpส่งคืน0ซึ่งประเมินว่าfalseเมื่อใดที่สตริงมีค่าเท่ากันสิ่งที่โปรแกรมเมอร์เริ่มต้นพยายามทำล้มเหลวอย่างน่าสังเวชและโดยทั่วไปเขาไม่เข้าใจว่าทำไมในตอนแรก มีการ0ประเมินผลtrueแทนฟังก์ชันนี้สามารถใช้ในการแสดงออกที่ง่ายที่สุด - อย่างใดอย่างหนึ่งข้างต้น - เมื่อเปรียบเทียบกับความเสมอภาคและการตรวจสอบที่เหมาะสมสำหรับ-1และ1จะทำได้เมื่อจำเป็นเท่านั้น เราจะพิจารณาประเภทการคืนเป็นbool(ในความคิดของเราฉันหมายถึง) ส่วนใหญ่เวลา นอกจากนี้ขอแนะนำชนิดใหม่signที่ใช้เวลาเพียงค่า-1, และ0 1ที่สามารถมีประโยชน์สวย ลองนึกภาพว่ามีโอเปอเรเตอร์ยานอวกาศใน …

16
หนึ่งควรตรวจสอบโมฆะถ้าเขาไม่คาดหวังโมฆะ?
เมื่อสัปดาห์ที่แล้วเรามีข้อโต้แย้งที่รุนแรงเกี่ยวกับการจัดการโมฆะในชั้นบริการของแอปพลิเคชันของเรา คำถามอยู่ในบริบท. NET แต่จะเหมือนกันใน Java และเทคโนโลยีอื่น ๆ คำถามคือคุณควรตรวจสอบค่า Null และทำให้โค้ดทำงานไม่ว่าจะเกิดอะไรขึ้นหรือปล่อยให้เกิดฟองสบู่ขึ้นเมื่อได้รับค่า Null อย่างไม่คาดคิด ในอีกด้านหนึ่งการตรวจสอบ null ที่คุณไม่ได้คาดหวัง (เช่นไม่มีส่วนติดต่อผู้ใช้ที่จะจัดการ) คือในความคิดของฉันเช่นเดียวกับการเขียนบล็อกลองกับจับเปล่า คุณกำลังซ่อนข้อผิดพลาด ข้อผิดพลาดอาจเป็นไปได้ว่าบางสิ่งมีการเปลี่ยนแปลงในรหัสและ null ตอนนี้เป็นค่าที่คาดไว้หรือมีข้อผิดพลาดอื่น ๆ และรหัสผิดจะถูกส่งผ่านไปยังวิธีการ ในทางกลับกันการตรวจสอบ nulls อาจเป็นนิสัยที่ดีโดยทั่วไป นอกจากนี้หากมีการตรวจสอบแอปพลิเคชันอาจทำงานต่อไปโดยมีเพียงส่วนเล็ก ๆ ของฟังก์ชันที่ไม่มีผลกระทบใด ๆ จากนั้นลูกค้าอาจรายงานข้อบกพร่องเล็ก ๆ เช่น "ไม่สามารถลบความคิดเห็น" แทนที่จะเป็นข้อบกพร่องที่รุนแรงมากเช่น "ไม่สามารถเปิดหน้า X" คุณทำตามแบบฝึกหัดอะไรบ้างและอะไรคือข้อโต้แย้งของคุณสำหรับหรือต่อต้านแนวทางใดแนวทางหนึ่ง? ปรับปรุง: ฉันต้องการเพิ่มรายละเอียดเกี่ยวกับกรณีของเราโดยเฉพาะ เราได้รับวัตถุบางอย่างจากฐานข้อมูลและทำการประมวลผลบางอย่างกับพวกมัน (สมมติว่าสร้างชุดสะสม) นักพัฒนาที่เขียนรหัสไม่ได้คาดหวังว่าวัตถุอาจเป็นโมฆะดังนั้นเขาจึงไม่ได้รวมการตรวจสอบใด ๆ และเมื่อโหลดหน้าเว็บแล้วพบว่ามีข้อผิดพลาดและไม่ได้โหลดหน้าทั้งหมด เห็นได้ชัดว่าในกรณีนี้ควรมีการตรวจสอบ จากนั้นเราได้พิจารณาว่าควรตรวจสอบวัตถุทุกชิ้นที่ประมวลผลแม้ว่าจะไม่คาดว่าจะหายไปหรือไม่และควรยกเลิกการประมวลผลในที่สุดหรือไม่ ประโยชน์สมมุติจะเป็นหน้าจะทำงานต่อไป นึกถึงผลการค้นหาใน Exchange …

12
ฉันได้รับแจ้งว่าควรใช้ข้อยกเว้นในกรณีพิเศษเท่านั้น ฉันจะรู้ได้อย่างไรว่ากรณีของฉันยอดเยี่ยม
กรณีเฉพาะของฉันที่นี่คือผู้ใช้สามารถส่งผ่านสตริงไปยังแอปพลิเคชันแอปพลิเคชันแยกวิเคราะห์และกำหนดให้กับวัตถุที่มีโครงสร้าง บางครั้งผู้ใช้อาจพิมพ์สิ่งที่ไม่ถูกต้อง ตัวอย่างเช่นการป้อนข้อมูลของพวกเขาอาจอธิบายบุคคล แต่พวกเขาอาจบอกว่าอายุของพวกเขาคือ "แอปเปิ้ล" พฤติกรรมที่ถูกต้องในกรณีนั้นคือย้อนกลับการทำธุรกรรมและเพื่อแจ้งให้ผู้ใช้เกิดข้อผิดพลาดและพวกเขาจะต้องลองอีกครั้ง อาจมีข้อกำหนดในการรายงานข้อผิดพลาดทุกครั้งที่เราสามารถหาได้ในอินพุตไม่ใช่เฉพาะในครั้งแรก ในกรณีนี้ฉันถกเถียงกันว่าเราควรจะมีข้อยกเว้น เขาไม่เห็นด้วยพูดว่า "ข้อยกเว้นควรเป็นข้อยกเว้น: คาดว่าผู้ใช้อาจป้อนข้อมูลที่ไม่ถูกต้องดังนั้นนี่ไม่ใช่กรณีพิเศษ" ฉันไม่รู้จริง ๆ ว่าจะโต้แย้งประเด็นนี้อย่างไรเนื่องจากคำจำกัดความของคำว่าเขา ดูเหมือนว่าจะถูกต้อง แต่ฉันเข้าใจว่านี่คือเหตุผลว่าทำไมจึงมีการสร้างข้อยกเว้นขึ้นมาตั้งแต่แรก มันเคยเป็นคุณต้องตรวจสอบผลลัพธ์เพื่อดูว่ามีข้อผิดพลาดเกิดขึ้น หากคุณล้มเหลวในการตรวจสอบสิ่งเลวร้ายอาจเกิดขึ้นโดยที่คุณไม่สังเกตเห็น โดยไม่มีข้อยกเว้นทุกระดับของสแต็กจำเป็นต้องตรวจสอบผลลัพธ์ของวิธีการที่พวกเขาเรียกและหากโปรแกรมเมอร์ลืมที่จะตรวจสอบในหนึ่งในระดับเหล่านี้รหัสอาจบังเอิญดำเนินการและบันทึกข้อมูลที่ไม่ถูกต้อง (ตัวอย่าง) ดูเหมือนว่ามีข้อผิดพลาดเกิดขึ้นได้ง่ายขึ้น อย่างไรก็ตามโปรดแก้ไขสิ่งที่ฉันได้พูดที่นี่ คำถามหลักของฉันคือถ้ามีคนพูดว่าข้อยกเว้นควรยอดเยี่ยมฉันจะรู้ได้อย่างไรว่ากรณีของฉันยอดเยี่ยม

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

8
คืนค่าเวทย์มนตร์โยนข้อยกเว้นหรือคืนเท็จเมื่อล้มเหลว?
บางครั้งฉันต้องเขียนวิธีหรือคุณสมบัติสำหรับไลบรารี่คลาสที่ไม่ได้ยอดเยี่ยมที่จะไม่มีคำตอบจริง แต่เป็นความล้มเหลว ไม่สามารถระบุบางสิ่ง, ไม่พร้อมใช้, ไม่พบ, ไม่สามารถทำได้ในปัจจุบันหรือไม่มีข้อมูลเพิ่มเติม ฉันคิดว่ามีวิธีแก้ปัญหาสามประการที่เป็นไปได้สำหรับสถานการณ์ที่ไม่เป็นพิเศษเช่นนี้เพื่อระบุความล้มเหลวใน C # 4: คืนค่าเวทย์มนตร์ที่ไม่มีความหมายเป็นอย่างอื่น (เช่นnullและ-1); โยนข้อยกเว้น (เช่นKeyNotFoundException); ส่งคืนfalseและระบุค่าส่งคืนจริงในoutพารามิเตอร์ (เช่นDictionary<,>.TryGetValue) ดังนั้นคำถามคือ: ในสถานการณ์ใดที่ฉันไม่ควรพลาด และถ้าฉันไม่ควรโยน: เมื่อส่งคืนค่าเวทมนตร์ที่อ้างถึงข้างต้นใช้Try*วิธีการที่มีoutพารามิเตอร์หรือไม่ (สำหรับฉันoutพารามิเตอร์ดูเหมือนว่าสกปรกและใช้งานได้อย่างถูกต้องมากกว่า) ฉันกำลังมองหาคำตอบที่เป็นจริงเช่นคำตอบที่เกี่ยวข้องกับแนวทางการออกแบบ (ฉันไม่รู้อะไรเกี่ยวกับTry*วิธีการ) ความสามารถในการใช้งาน (เมื่อฉันขอสิ่งนี้สำหรับห้องสมุดคลาส) ความสอดคล้องกับ BCL และความสามารถในการอ่าน ในไลบรารีคลาสพื้นฐาน. NET Framework ใช้วิธีการทั้งสาม: คืนค่าเวทย์มนตร์ที่ไม่มีความหมายเป็นอย่างอื่น: Collection<T>.IndexOf ผลตอบแทน -1 StreamReader.Read ผลตอบแทน -1 Math.Sqrt ส่งกลับ NaN Hashtable.Item ผลตอบแทนที่เป็นโมฆะ; โยนข้อยกเว้น: Dictionary<,>.Item พ่น KeyNotFoundException Double.Parseพ่น FormatException; …

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

16
วิธีจัดการหารด้วยศูนย์ในภาษาที่ไม่สนับสนุนข้อยกเว้น?
ฉันกำลังอยู่ระหว่างการพัฒนาภาษาการเขียนโปรแกรมใหม่เพื่อแก้ไขความต้องการทางธุรกิจและภาษานี้เหมาะสำหรับผู้ใช้มือใหม่ ดังนั้นจึงไม่มีการสนับสนุนสำหรับการจัดการข้อยกเว้นในภาษาและฉันจะไม่คาดหวังให้พวกเขาใช้มันแม้ว่าฉันจะเพิ่มมัน ฉันมาถึงจุดที่ฉันต้องใช้ตัวดำเนินการหารแล้วและฉันสงสัยว่าจะจัดการหารด้วยข้อผิดพลาดที่ดีที่สุดได้อย่างไร ฉันมีสามวิธีที่เป็นไปได้ในการจัดการกรณีนี้ ละเว้นข้อผิดพลาดและสร้าง0ผลลัพธ์ การบันทึกคำเตือนหากเป็นไปได้ เพิ่มNaNเป็นค่าที่เป็นไปได้สำหรับตัวเลข แต่นั่นทำให้เกิดคำถามเกี่ยวกับวิธีจัดการกับNaNค่าในส่วนอื่น ๆ ของภาษา ยุติการทำงานของโปรแกรมและรายงานข้อผิดพลาดร้ายแรงที่เกิดขึ้นกับผู้ใช้ ตัวเลือก # 1 ดูเหมือนจะเป็นทางออกที่สมเหตุสมผลเท่านั้น ตัวเลือก # 3 ไม่สามารถใช้งานได้เนื่องจากภาษานี้จะใช้ในการเรียกใช้ตรรกะเป็น cron ทุกคืน ทางเลือกของฉันในการจัดการหารด้วยข้อผิดพลาดเป็นศูนย์คืออะไรและมีความเสี่ยงอะไรบ้างเมื่อเลือกตัวเลือก # 1

7
ควรตรวจสอบข้อผิดพลาดเล็ก ๆ น้อย ๆ ใน C หรือไม่?
ในฐานะโปรแกรมเมอร์ที่ดีคนหนึ่งควรเขียนโค้ดที่มีประสิทธิภาพซึ่งจะจัดการกับผลลัพธ์ทุกรายการของโปรแกรมของเขา อย่างไรก็ตามฟังก์ชันเกือบทั้งหมดจากไลบรารี C จะส่งคืนค่า 0 หรือ -1 หรือ NULL เมื่อมีข้อผิดพลาด บางครั้งก็ชัดเจนว่าจำเป็นต้องมีการตรวจสอบข้อผิดพลาดเช่นเมื่อคุณพยายามเปิดไฟล์ แต่ฉันมักจะละเลยการตรวจสอบข้อผิดพลาดในฟังก์ชั่นเช่นprintfหรือmallocเพราะฉันไม่รู้สึกจำเป็น if(fprintf(stderr, "%s", errMsg) < 0){ perror("An error occurred while displaying the previous error."); exit(1); } เป็นการดีหรือไม่ที่จะละเว้นข้อผิดพลาดบางอย่างหรือมีวิธีที่ดีกว่าในการจัดการข้อผิดพลาดทั้งหมดหรือไม่
60 c  error-handling 

5
คอมพิวเตอร์จะพยายามหารด้วยศูนย์หรือไม่
เราทุกคนรู้0/0เป็นUndefinedและกลับข้อผิดพลาดถ้าผมจะใส่ลงในเครื่องคิดเลขและถ้าผมจะสร้างโปรแกรม (ใน C อย่างน้อย) OS จะยุติมันเมื่อฉันพยายามที่จะหารด้วยศูนย์ แต่สิ่งที่ฉันสงสัยคือถ้าคอมพิวเตอร์พยายามแบ่งเป็นศูนย์หรือว่ามี "การป้องกันในตัว" ดังนั้นเมื่อมัน "เห็น" 0/0มันจะส่งกลับข้อผิดพลาดก่อนที่จะพยายามคำนวณ

3
ฉันควรใช้รหัสสถานะ HTTP เพื่ออธิบายเหตุการณ์ระดับแอปพลิเคชัน
เซิร์ฟเวอร์จำนวนมากที่ฉันจัดการจะส่งคืน HTTP 200 สำหรับคำขอที่ลูกค้าควรพิจารณาถึงความล้มเหลวโดยมี 'ความสำเร็จ: เท็จ' ในเนื้อความ ดูเหมือนว่าฉันจะใช้รหัส HTTP ไม่ถูกต้องกับฉันโดยเฉพาะในกรณีของการตรวจสอบสิทธิ์ที่ล้มเหลว ฉันได้อ่านรหัสข้อผิดพลาด HTTP โดยสังเขปแล้วสรุปว่า '4xx' บ่งชี้ว่าไม่ควรทำคำขออีกครั้งจนกว่าจะมีการเปลี่ยนแปลงในขณะที่ '5xx' แสดงว่าคำขอนั้นอาจจะใช้งานได้หรืออาจไม่ถูกต้อง แต่ก็ไม่สำเร็จ ในกรณีนี้ 200: การเข้าสู่ระบบล้มเหลวหรือ 200: ไม่พบไฟล์นั้นหรือ 200: พารามิเตอร์ที่หายไป x ดูเหมือนผิดปกติ ในทางกลับกันฉันเห็นการโต้แย้งว่า '4xx' ควรระบุปัญหาเชิงโครงสร้างของคำขอเท่านั้น ดังนั้นจึงเหมาะสมที่จะส่งคืน 200: ผู้ใช้ / รหัสผ่านไม่ดีแทนที่จะได้รับอนุญาต 401 เนื่องจากลูกค้าได้รับอนุญาตให้ทำการร้องขอ แต่มันเกิดขึ้นไม่ถูกต้อง อาร์กิวเมนต์นี้สามารถสรุปได้ว่าหากเซิร์ฟเวอร์สามารถประมวลผลคำขอและตัดสินใจได้ทั้งหมดรหัสการตอบสนองควรเป็น 200 และขึ้นอยู่กับลูกค้าที่จะตรวจสอบเนื้อหาสำหรับข้อมูลเพิ่มเติม โดยทั่วไปดูเหมือนว่าจะเป็นเรื่องของการตั้งค่า แต่นั่นไม่น่าพอใจดังนั้นถ้าใครมีเหตุผลว่าทำไมหนึ่งในกระบวนทัศน์เหล่านี้ถูกต้องมากขึ้นฉันอยากจะรู้

6
AJAX ที่ซ่อนไว้นั้นปลอดภัยแค่ไหนที่ขอประสิทธิภาพปลอมมา?
คำขอ AJAX ที่ซ่อนอยู่คืออะไร ฉันสังเกตเห็นการเพิ่มขึ้นของการใช้คำขอ AJAX ที่ซ่อนอยู่ซึ่งออกแบบมาเพื่อให้การกระทำของผู้ใช้ปรากฏขึ้นทันที ฉันจะอ้างถึงคำขอ AJAX ประเภทนี้ว่าไม่ปิดกั้น มันเป็นคำขอ AJAX ที่เกิดขึ้นโดยที่ผู้ใช้ไม่ได้ตระหนักว่ากำลังเกิดขึ้นมันถูกดำเนินการในพื้นหลังและการดำเนินการของมันเงียบ ( ไม่มี verbose เพื่อระบุว่าการโทร AJAX เสร็จสมบูรณ์แล้ว ) เป้าหมายคือเพื่อให้การดำเนินการปรากฏว่ามันเกิดขึ้นทันทีเมื่อมันยังไม่เสร็จ นี่คือตัวอย่างของคำขอ AJAX ที่ไม่ปิดกั้น ผู้ใช้คลิกที่ลบในชุดอีเมล รายการจะหายไปจากกล่องจดหมายทันทีและสามารถดำเนินการต่อกับการดำเนินการอื่นได้ ในขณะเดียวกันคำขอ AJAX กำลังประมวลผลการลบรายการในพื้นหลัง ผู้ใช้กรอกฟอร์มสำหรับบันทึกใหม่ คลิกบันทึก รายการใหม่จะปรากฏในรายการทันที ผู้ใช้สามารถเพิ่มระเบียนใหม่ต่อไปได้ เพื่อชี้แจงนี่คือตัวอย่างของการปิดกั้นการร้องขอ AJAX; ผู้ใช้คลิกที่ลบในชุดอีเมล เคอร์เซอร์นาฬิกาทรายปรากฏขึ้น มีการร้องขอ AJAX และเมื่อตอบสนองเคอร์เซอร์นาฬิกาทรายถูกปิดใช้งาน ผู้ใช้ต้องรอวินาทีเพื่อให้การดำเนินการเสร็จสมบูรณ์ ผู้ใช้กรอกฟอร์มสำหรับบันทึกใหม่ คลิกบันทึก แบบฟอร์มเปลี่ยนเป็นสีเทาเมื่อมีตัวโหลด AJAX เคลื่อนไหว ข้อความจะปรากฏ "บันทึกข้อมูลของคุณแล้ว" และบันทึกใหม่จะปรากฏในรายการ ความแตกต่างระหว่างสองสถานการณ์ข้างต้นคือการตั้งค่า AJAX …

7
การติดตามสแต็คควรอยู่ในข้อความแสดงข้อผิดพลาดที่ปรากฏแก่ผู้ใช้หรือไม่
ฉันมีข้อโต้แย้งเล็กน้อยในที่ทำงานของฉันและฉันพยายามคิดออกว่าใครถูกและสิ่งที่ถูกต้องคืออะไร บริบท: เว็บแอปพลิเคชันอินทราเน็ตที่ลูกค้าของเราใช้สำหรับการบัญชีและสิ่ง ERP อื่น ๆ ฉันเห็นว่าข้อความแสดงข้อผิดพลาดที่นำเสนอต่อผู้ใช้ (เมื่อเกิดข้อผิดพลาด) ควรมีข้อมูลให้มากที่สุดรวมถึงการติดตามสแต็ก แน่นอนว่าต้องเริ่มต้นด้วยดี "มีข้อผิดพลาดเกิดขึ้นโปรดส่งข้อมูลด้านล่างไปยังผู้พัฒนา" ด้วยตัวอักษรขนาดใหญ่ที่เป็นมิตร เหตุผลของฉันคือภาพหน้าจอของแอปพลิเคชันที่ขัดข้องมักจะเป็นแหล่งข้อมูลที่หาได้ง่ายเท่านั้น แน่นอนว่าคุณสามารถลองควบคุมผู้ดูแลระบบของลูกค้าพยายามอธิบายว่าไฟล์บันทึกของคุณอยู่ที่ไหน ฯลฯ แต่นั่นอาจจะช้าและเจ็บปวด (การพูดคุยกับตัวแทนลูกค้าส่วนใหญ่) นอกจากนี้การมีข้อมูลที่ครบถ้วนและเป็นประโยชน์อย่างยิ่งในการพัฒนาซึ่งคุณไม่จำเป็นต้องค้นหาไฟล์บันทึกเพื่อค้นหาสิ่งที่คุณต้องการในทุก ๆ ข้อยกเว้น (แต่นั่นสามารถแก้ไขได้ด้วยสวิตช์การกำหนดค่า) น่าเสียดายที่มี "การตรวจสอบความปลอดภัย" บางประเภท (ไม่รู้เลยว่าพวกเขาทำอย่างไรโดยไม่มีแหล่งที่มา ... แต่ไม่ว่าอะไรก็ตาม) และพวกเขาก็บ่นเกี่ยวกับข้อความยกเว้นทั้งหมดที่อ้างว่าเป็นภัยคุกคามความปลอดภัย ตามปกติแล้วลูกค้า (อย่างน้อยหนึ่งคนที่ฉันรู้จัก) ได้ทำสิ่งนี้ตามมูลค่าที่กำหนดและตอนนี้ต้องการให้มีการล้างข้อความ ฉันล้มเหลวในการดูว่าผู้โจมตีที่มีศักยภาพสามารถใช้กองติดตามเพื่อค้นหาสิ่งที่เขาไม่สามารถหามาก่อน มีตัวอย่างใดบ้างมีหลักฐานรับรองว่าใครเคยทำเช่นนั้นบ้าง? ฉันคิดว่าเราควรต่อสู้กับความคิดที่โง่เขลา แต่บางทีฉันอาจเป็นคนโง่ที่นี่ดังนั้น ... ถูกต้องใคร

2
แนวทางที่ชัดเจนสำหรับการจัดการข้อผิดพลาดที่กำหนดเองใน ASP.NET MVC 3 มีอะไรบ้าง
กระบวนการในการจัดการข้อผิดพลาดที่กำหนดเองใน ASP.NET MVC (3 ในกรณีนี้) ดูเหมือนว่าจะถูกทอดทิ้งอย่างไม่น่าเชื่อ ฉันได้อ่านคำถามและคำตอบต่าง ๆ ที่นี่บนเว็บหน้าช่วยเหลือสำหรับเครื่องมือต่าง ๆ (เช่น Elmah) แต่ฉันรู้สึกว่าฉันได้เข้าสู่แวดวงที่สมบูรณ์และยังไม่มีทางออกที่ดีที่สุด ด้วยความช่วยเหลือของคุณบางทีเราสามารถกำหนดวิธีการมาตรฐานใหม่สำหรับการจัดการข้อผิดพลาด ฉันต้องการให้สิ่งต่าง ๆ เรียบง่ายและไม่ทำให้เกิดปัญหามากเกินไป นี่คือเป้าหมายของฉัน: สำหรับข้อผิดพลาดเซิร์ฟเวอร์ / ข้อยกเว้น: แสดงข้อมูลการดีบักใน dev แสดงหน้าข้อผิดพลาดที่เป็นมิตรในการผลิต บันทึกข้อผิดพลาดและส่งอีเมลถึงผู้ดูแลระบบในการผลิต ส่งคืนรหัสสถานะ HTTP 500 สำหรับข้อผิดพลาด 404 ไม่พบ: แสดงหน้าข้อผิดพลาดที่เป็นมิตร บันทึกข้อผิดพลาดและส่งอีเมลถึงผู้ดูแลระบบในการผลิต ส่งคืนรหัสสถานะ HTTP 404 มีวิธีในการบรรลุเป้าหมายเหล่านี้ด้วย ASP.NET MVC หรือไม่?

3
แนวทางปฏิบัติที่ดีที่สุดในการสร้างรูปแบบรหัสข้อผิดพลาดสำหรับโครงการระดับองค์กรใน C # [ปิด]
ฉันกำลังทำงานในโครงการระดับองค์กรซึ่งจะถูกปรับใช้ในองค์กรธุรกิจขนาดกลางและขนาดย่อมหลายแห่ง การสนับสนุนสำหรับโครงการนี้กำลังดิ้นรนและฉันต้องการสร้างรูปแบบการเข้ารหัสสำหรับข้อผิดพลาด ( เช่นรหัสสถานะ HTTP ) วิธีนี้จะช่วยให้ผู้ให้ความช่วยเหลือสามารถอ้างถึงเอกสารและแก้ไขปัญหาโดยเร็วที่สุด แนวทางปฏิบัติและคำแนะนำที่ดีที่สุดในการทำสิ่งนี้คืออะไร? ความช่วยเหลือใด ๆ ในการทำเช่นนี้จะเป็นประโยชน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.