คำถามติดแท็ก exceptions

ข้อยกเว้นคือการเกิดขึ้นในกระบวนการแอปพลิเคชันที่ต้องการเบี่ยงเบนจากโฟลว์ปกติของโปรแกรม

9
เหตุใดข้อความยกเว้นจำนวนมากจึงไม่มีรายละเอียดที่เป็นประโยชน์
ดูเหมือนจะมีจำนวนหนึ่งของข้อตกลงที่ข้อความยกเว้นควรมีรายละเอียดที่เป็นประโยชน์ ทำไมจึงเป็นเช่นนั้นข้อยกเว้นที่พบบ่อยจำนวนมากจากส่วนประกอบของระบบไม่มีรายละเอียดที่เป็นประโยชน์ ตัวอย่างบางส่วน: การListเข้าถึงดัชนี. NET ArgumentOutOfRangeExceptionไม่ได้บอกค่าดัชนีที่พยายามแล้วและไม่ถูกต้องและไม่ได้บอกช่วงที่อนุญาต โดยทั่วไปข้อความข้อยกเว้นทั้งหมดจากไลบรารีมาตรฐาน MSVC C ++ นั้นไร้ประโยชน์อย่างเต็มที่ (ในหลอดเลือดดำเดียวกันกับด้านบน) ข้อยกเว้นของออราเคิลใน .NET บอกคุณ (ถอดความ) "ตารางหรือมุมมองไม่พบ" แต่ไม่ได้ที่หนึ่ง ดังนั้นสำหรับฉันดูเหมือนว่าข้อความยกเว้นส่วนใหญ่ไม่มีรายละเอียดเพียงพอที่จะเป็นประโยชน์ ความคาดหวังของฉันอยู่นอกสายหรือไม่? ฉันใช้ข้อยกเว้นผิดที่ฉันสังเกตเห็นสิ่งนี้ด้วยหรือไม่ หรืออาจจะเป็นความประทับใจของฉันคือผิดส่วนใหญ่ของข้อยกเว้นไม่จริงให้รายละเอียดมีประโยชน์หรือไม่
220 c#  c++  exceptions 

22
การอ้างอิง Null เป็นสิ่งที่เลวร้ายจริง ๆ หรือไม่?
ฉันได้ยินมาว่าการรวมการอ้างอิงโมฆะในภาษาการเขียนโปรแกรมเป็น "ความผิดพลาดพันล้านดอลลาร์" แต่ทำไม แน่นอนว่าพวกเขาสามารถทำให้ NullReferenceExceptions ได้ แต่อย่างนั้น องค์ประกอบของภาษาใด ๆ สามารถเป็นแหล่งของข้อผิดพลาดหากใช้ไม่ถูกต้อง และทางเลือกคืออะไร? ฉันคิดว่าแทนที่จะพูดสิ่งนี้: Customer c = Customer.GetByLastName("Goodman"); // returns null if not found if (c != null) { Console.WriteLine(c.FirstName + " " + c.LastName + " is awesome!"); } else { Console.WriteLine("There was no customer named Goodman. How lame!"); } คุณสามารถพูดสิ่งนี้: …

9
มีข้อยกเว้นในฐานะโฟลว์คอนโทรลที่ถือว่าเป็น antipattern ที่ร้ายแรง ถ้าเป็นเช่นนั้นทำไม
ย้อนกลับไปในช่วงปลายยุค 90 ฉันทำงานค่อนข้างน้อยด้วยรหัสฐานที่ใช้ข้อยกเว้นเป็นตัวควบคุมการไหล มันใช้เครื่องจักรสถานะ จำกัด เพื่อขับเคลื่อนแอปพลิเคชั่นโทรศัพท์ เมื่อไม่นานมานี้ฉันนึกถึงวันนั้นเพราะฉันทำเว็บแอป MVC พวกเขาทั้งคู่มีControllers ที่ตัดสินใจว่าจะไปที่ไหนต่อไปและให้ข้อมูลกับตรรกะปลายทาง การกระทำของผู้ใช้จากโดเมนของโทรศัพท์เก่าโรงเรียนเช่นโทน DTMF กลายเป็นพารามิเตอร์กับวิธีการดำเนินการ แต่แทนที่จะกลับสิ่งที่ต้องการพวกเขาโยนViewResultStateTransitionException ฉันคิดว่าความแตกต่างที่สำคัญคือวิธีการดำเนินการเป็นvoidหน้าที่ ผมจำไม่ได้ทุกสิ่งที่ฉันทำกับความเป็นจริงนี้ แต่ผมเคยลังเลที่จะได้ไปลงที่ถนนในการจดจำมากเพราะตั้งแต่งานที่เหมือน 15 ปีที่ผ่านมาผมไม่เคยเห็นนี้ในรหัสการผลิตที่งานอื่น ๆ ฉันสันนิษฐานว่านี่เป็นสัญญาณว่าเป็นรูปแบบการต่อต้านที่เรียกว่า เป็นกรณีนี้หรือไม่และถ้าเป็นเช่นนั้นทำไม อัปเดต: เมื่อฉันถามคำถามฉันมีคำตอบในใจของ @ MasonWheeler ดังนั้นฉันจึงไปพร้อมกับคำตอบที่เพิ่มความรู้ให้มากที่สุด ฉันคิดว่าเขาเป็นคำตอบที่ดีเช่นกัน

13
ข้อยกเว้น vs ชุดผลลัพธ์ว่างเปล่าเมื่ออินพุตมีความถูกต้องทางเทคนิค แต่ไม่น่าพอใจ
ฉันกำลังพัฒนาห้องสมุดที่มีไว้สำหรับเผยแพร่สู่สาธารณะ มันมีวิธีการต่าง ๆ สำหรับการทำงานกับชุดของวัตถุ - การสร้างการตรวจสอบการแบ่งและการฉายชุดในรูปแบบใหม่ ในกรณีที่มีความเกี่ยวข้องมันเป็นไลบรารีคลาส C # ที่มีส่วนขยายของสไตล์ LINQ IEnumerableที่จะเปิดตัวเป็นแพ็คเกจ NuGet วิธีการบางอย่างในไลบรารีนี้สามารถให้พารามิเตอร์อินพุตที่ไม่น่าพอใจ ตัวอย่างเช่นในวิธี combinatoric มีวิธีการสร้างชุดnรายการทั้งหมดที่สามารถสร้างขึ้นจากชุดแหล่งที่มาของรายการm ตัวอย่างเช่นกำหนดชุด: 1, 2, 3, 4, 5 และขอให้รวมกัน 2 จะผลิต: 1, 2 1, 3 1, 4 ฯลฯ ... 5, 3 5, 4 เห็นได้ชัดว่าเป็นไปได้ที่จะขอสิ่งที่ไม่สามารถทำได้เช่นให้ชุด 3 รายการจากนั้นขอชุดค่าผสม 4 รายการพร้อมตั้งค่าตัวเลือกที่ระบุว่าสามารถใช้งานได้เพียงครั้งเดียว ในสถานการณ์สมมตินี้แต่ละพารามิเตอร์จะถูกต้องเป็นรายบุคคล : การรวบรวมแหล่งที่มาไม่เป็นโมฆะและมีรายการต่างๆ ขนาดที่ต้องการของชุดค่าผสมเป็นจำนวนเต็มบวกที่ไม่ใช่ศูนย์ โหมดที่ร้องขอ (ใช้แต่ละรายการเพียงครั้งเดียว) เป็นตัวเลือกที่ถูกต้อง …

7
วิธีการเขียนข้อความยกเว้นที่ดี
ขณะนี้ฉันกำลังทำการตรวจสอบโค้ดและหนึ่งในสิ่งที่ฉันสังเกตเห็นคือจำนวนข้อยกเว้นที่ดูเหมือนว่าข้อความข้อยกเว้นจะย้ำตำแหน่งข้อยกเว้นที่เกิดขึ้น เช่น throw new Exception("BulletListControl: CreateChildControls failed."); ทั้งสามรายการในข้อความนี้ฉันสามารถทำงานได้จากข้อยกเว้นที่เหลือ ฉันรู้ชั้นเรียนและวิธีการจากการติดตามสแต็กและฉันรู้ว่ามันล้มเหลว (เพราะฉันมีข้อยกเว้น) ฉันทำให้ฉันคิดถึงข้อความที่ฉันใส่ไว้ในข้อความยกเว้น ก่อนอื่นฉันสร้างคลาสยกเว้นถ้าไม่มีอยู่แล้วด้วยเหตุผลทั่วไป (เช่นPropertyNotFoundException- สาเหตุ ) จากนั้นเมื่อฉันโยนมันข้อความจะระบุสิ่งที่ผิดพลาด (เช่น "ไม่สามารถหาคุณสมบัติ 'IDontExist' บนโหนด 1234 "- อะไร ) StackTraceที่อยู่ใน เมื่ออาจจะจบลงในบันทึก (ถ้ามี) วิธีสำหรับนักพัฒนาที่จะทำงานออก (และแก้ไข) คุณมีเคล็ดลับอื่น ๆ ในการขว้างข้อยกเว้นหรือไม่? โดยเฉพาะเกี่ยวกับการสร้างชนิดใหม่และข้อความข้อยกเว้น
101 exceptions 

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

9
ตรวจสอบการจัดการข้อยกเว้นครั้งแรกหรือไม่
ฉันกำลังทำงานกับหนังสือ"Head First Python" (เป็นภาษาของฉันที่จะเรียนรู้ในปีนี้) และฉันได้ไปยังส่วนที่พวกเขาโต้เถียงเกี่ยวกับเทคนิคสองรหัส: การ ตรวจสอบการจัดการข้อยกเว้นข้อแรก นี่คือตัวอย่างของรหัสไพ ธ อน: # Checking First for eachLine in open("../../data/sketch.txt"): if eachLine.find(":") != -1: (role, lineSpoken) = eachLine.split(":",1) print("role=%(role)s lineSpoken=%(lineSpoken)s" % locals()) # Exception handling for eachLine in open("../../data/sketch.txt"): try: (role, lineSpoken) = eachLine.split(":",1) print("role=%(role)s lineSpoken=%(lineSpoken)s" % locals()) except: pass ตัวอย่างแรกเกี่ยวข้องโดยตรงกับปัญหาใน.splitฟังก์ชัน คนที่สองเพียงแค่ให้ตัวจัดการข้อยกเว้นจัดการกับมัน (และละเว้นปัญหา) …

6
จะดีกว่าถ้าใช้ assert หรือ IllegalArgumentException สำหรับพารามิเตอร์เมธอดที่ต้องการ?
ใน Java ซึ่งแนะนำมากขึ้นและทำไม? ทั้งสองประเภทจะโยนข้อยกเว้นดังนั้นในการจัดการพวกเขาก็เหมือนกัน assertสั้นกว่านี้เล็กน้อย แต่ฉันไม่แน่ใจว่าสำคัญแค่ไหน public void doStuff(Object obj) { assert obj != null; ... } VS public void doStuff(Object obj) { if (obj == null) { throw new IllegalArgumentException("object was null"); } ... }

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; …

10
ข้อยกเว้นรหัสข้อผิดพลาดและสหภาพที่ถูกเลือกปฏิบัติ
ฉันเพิ่งเริ่มงานเขียนโปรแกรม C # แต่ฉันมีพื้นหลังค่อนข้างน้อยใน Haskell แต่ฉันเข้าใจว่า C # เป็นภาษาที่เน้นวัตถุฉันไม่ต้องการบังคับให้หมุดกลมกลายเป็นช่องสี่เหลี่ยม ฉันอ่านบทความException Throwingจาก Microsoft ซึ่งระบุว่า: อย่าส่งคืนรหัสข้อผิดพลาด แต่เมื่อใช้กับ Haskell ฉันใช้ชนิดข้อมูล C # OneOfคืนผลลัพธ์เป็นค่า "right" หรือข้อผิดพลาด (ส่วนใหญ่มักจะเป็น Enumeration) เป็นค่า "left" นี่เป็นเหมือนการประชุมของEitherHaskell สำหรับฉันดูเหมือนปลอดภัยกว่าข้อยกเว้น ใน C # การละเว้นข้อยกเว้นจะไม่ทำให้เกิดข้อผิดพลาดในการคอมไพล์และหากพวกมันไม่ถูกจับพวกมันก็จะทำให้โปรแกรมของคุณพัง นี่อาจจะดีกว่าการละเว้นรหัสข้อผิดพลาดและทำให้เกิดพฤติกรรมที่ไม่ได้กำหนด แต่การหยุดทำงานซอฟต์แวร์ไคลเอ็นต์ของคุณยังคงไม่ดีโดยเฉพาะอย่างยิ่งเมื่อทำงานด้านธุรกิจที่สำคัญอื่น ๆ ในพื้นหลัง ด้วยOneOfจะต้องมีความชัดเจนมากเกี่ยวกับการเปิดออกและการจัดการค่าส่งคืนและรหัสข้อผิดพลาด และหากไม่มีใครรู้วิธีจัดการกับมันในขั้นตอนนั้นใน call stack จะต้องใส่ค่าส่งคืนของฟังก์ชันปัจจุบันเพื่อให้ผู้โทรทราบว่าอาจเกิดข้อผิดพลาดได้ แต่นี่ไม่ใช่วิธีการที่ Microsoft แนะนำ ใช้OneOfแทนข้อยกเว้นในการจัดการข้อยกเว้น "สามัญ" (เช่น File Not Found …
80 c#  exceptions 

8
เหตุใดจึงต้องลองใช้ ... ในที่สุดโดยไม่มีข้อห้าม?
try ... catchวิธีที่คลาสสิกในการเขียนโปรแกรมอยู่กับ เมื่อไรที่มันจะเหมาะสมที่จะใช้tryโดยไม่catch? ใน Python ข้อมูลต่อไปนี้ถูกกฎหมายและสมเหตุสมผล: try: #do work finally: #do something unconditional อย่างไรก็ตามรหัสไม่ได้catchอะไรเลย ในทำนองเดียวกันหนึ่งสามารถคิดใน Java มันจะเป็นดังนี้: try { //for example try to get a database connection } finally { //closeConnection(connection) } มันดูดีและทันใดนั้นฉันก็ไม่ต้องกังวลกับข้อยกเว้นประเภทอื่น ๆ ถ้านี่เป็นการฝึกฝนที่ดีการฝึกฝนที่ดีเมื่อไหร่? อีกวิธีหนึ่งคือเหตุผลว่าทำไมนี่ไม่ใช่การปฏิบัติที่ดีหรือไม่ถูกกฎหมาย? (ฉันไม่ได้รวบรวมซอร์สฉันถามเกี่ยวกับมันเนื่องจากอาจเป็นข้อผิดพลาดทางไวยากรณ์สำหรับ Java ฉันตรวจสอบว่า Python รวบรวมแน่นอน) ปัญหาที่เกี่ยวข้องที่ฉันพบคือ: ฉันยังคงเขียนฟังก์ชั่น / วิธีในตอนท้ายของมันจะต้องกลับบางสิ่งบางอย่าง อย่างไรก็ตามอาจอยู่ในสถานที่ที่ไม่ควรไปถึงและต้องเป็นจุดกลับ ดังนั้นแม้ว่าฉันจะจัดการกับข้อยกเว้นข้างต้นฉันยังคงกลับมาNULLหรือสตริงที่ว่างในบางจุดในรหัสที่ไม่สามารถเข้าถึงได้มักจะสิ้นสุดของวิธีการ / ฟังก์ชั่น …

14
ทำไมการคำนวณทางคณิตศาสตร์มากเกินไปจึงถูกเพิกเฉย?
เคยลองสรุปตัวเลขทั้งหมดตั้งแต่ 1 ถึง 2,000,000 ในภาษาการเขียนโปรแกรมที่คุณชื่นชอบ? ผลลัพธ์ที่ได้นั้นง่ายต่อการคำนวณด้วยตนเอง: 2,000,001,000,000 ซึ่งมีขนาดใหญ่กว่า 900 เท่าของค่าสูงสุดของจำนวนเต็ม 32 บิตที่ไม่ได้ลงนาม C # พิมพ์ออกมา-1453759936- ค่าลบ! และฉันเดาว่า Java ทำเช่นเดียวกัน นั่นหมายความว่ามีบางภาษาโปรแกรมทั่วไปที่ละเว้น Arithmetic Overflow โดยค่าเริ่มต้น (ใน C # มีตัวเลือกที่ซ่อนอยู่สำหรับการเปลี่ยนแปลงนั้น) นั่นเป็นพฤติกรรมที่ดูเสี่ยงมากสำหรับฉันและไม่ใช่ความผิดพลาดของ Ariane 5 ที่เกิดจากการไหลล้นเช่นนี้ใช่ไหม ดังนั้น: อะไรคือการตัดสินใจในการออกแบบที่อยู่เบื้องหลังพฤติกรรมที่อันตราย แก้ไข: คำตอบแรกสำหรับคำถามนี้แสดงค่าใช้จ่ายในการตรวจสอบที่มากเกินไป มารันโปรแกรม C # สั้น ๆ เพื่อทดสอบสมมติฐานนี้: Stopwatch watch = Stopwatch.StartNew(); checked { for (int i …

13
เป็นการดีที่จะตรวจสอบข้อยกเว้นที่ตรวจสอบแล้วโยน RuntimeException หรือไม่?
ฉันอ่านรหัสของเพื่อนร่วมงานและพบว่าเขามักจะจับข้อยกเว้นต่าง ๆ และจากนั้นก็โยน 'RuntimeException' แทน ฉันมักจะคิดว่านี่เป็นวิธีปฏิบัติที่ไม่ดีมาก ฉันผิดหรือเปล่า?

12
มีการตั้งค่าสถานะเพื่อระบุว่าเราควรผิดพลาดหรือไม่
ฉันเพิ่งเริ่มทำงานในที่ที่มีผู้พัฒนาอายุมาก (ประมาณ 50 ปีขึ้นไป) พวกเขาทำงานเกี่ยวกับแอพพลิเคชั่นที่สำคัญเกี่ยวกับการบินที่ระบบไม่สามารถลงได้ เป็นผลให้โปรแกรมเมอร์ที่มีอายุมากกว่ามีแนวโน้มที่จะรหัสด้วยวิธีนี้ เขามีแนวโน้มที่จะวางบูลีนในวัตถุเพื่อระบุว่าควรโยนข้อยกเว้นหรือไม่ ตัวอย่าง public class AreaCalculator { AreaCalculator(bool shouldThrowExceptions) { ... } CalculateArea(int x, int y) { if(x < 0 || y < 0) { if(shouldThrowExceptions) throwException; else return 0; } } } (ในโครงการของเราวิธีการอาจล้มเหลวเนื่องจากเราพยายามใช้อุปกรณ์เครือข่ายที่ไม่สามารถแสดงได้ในเวลาตัวอย่างพื้นที่เป็นเพียงตัวอย่างของการตั้งค่าสถานะข้อยกเว้น) สำหรับฉันนี่ดูเหมือนรหัสกลิ่น การเขียนการทดสอบหน่วยจะซับซ้อนกว่าเล็กน้อยเนื่องจากคุณต้องทดสอบการตั้งค่าสถานะข้อยกเว้นในแต่ละครั้ง นอกจากนี้หากมีสิ่งผิดปกติคุณไม่ต้องการรู้ทันทีหรือไม่? ไม่ควรเป็นความรับผิดชอบของผู้โทรที่จะกำหนดวิธีดำเนินการต่อ ตรรกะ / เหตุผลของเขาคือโปรแกรมของเราต้องการทำสิ่งหนึ่งแสดงข้อมูลให้ผู้ใช้ ข้อยกเว้นอื่นใดที่ไม่ได้ห้ามไม่ให้เราทำเช่นนั้นควรเพิกเฉย ฉันยอมรับว่าพวกเขาไม่ควรเพิกเฉย แต่ควรทำให้เกิดฟองและจัดการโดยบุคคลที่เหมาะสมและไม่จำเป็นต้องจัดการกับสถานะสำหรับสิ่งนั้น นี่เป็นวิธีที่ดีในการจัดการข้อยกเว้นหรือไม่ …

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

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