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

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

11
REST API ควรส่งคืนข้อผิดพลาดเซิร์ฟเวอร์ภายใน 500 ข้อเพื่อระบุว่าแบบสอบถามอ้างอิงวัตถุที่ไม่มีอยู่หรือไม่
ฉันกำลังทำงานกับ REST API ซึ่งอยู่บนเซิร์ฟเวอร์ที่จัดการข้อมูลสำหรับอุปกรณ์ IoT จำนวนมาก งานของฉันคือการสืบค้นเซิร์ฟเวอร์โดยใช้ API เพื่อรวบรวมข้อมูลประสิทธิภาพเฉพาะเกี่ยวกับอุปกรณ์ดังกล่าว ในอินสแตนซ์หนึ่งฉันได้รับรายการอุปกรณ์ที่มีอยู่และตัวระบุที่เกี่ยวข้องจากนั้นจึงสอบถามเซิร์ฟเวอร์เพื่อรับรายละเอียดเพิ่มเติมโดยใช้ตัวระบุเหล่านั้น (GUID) เซิร์ฟเวอร์ส่งคืน500 Internal Server Errorแบบสอบถามสำหรับหนึ่งใน ID เหล่านั้น ในแอปพลิเคชันของฉันมีข้อผิดพลาดเกิดขึ้นและฉันไม่เห็นรายละเอียดเกี่ยวกับข้อผิดพลาด หากฉันตรวจสอบการตอบสนองอย่างใกล้ชิดกับบุรุษไปรษณีย์ฉันจะเห็นว่าเซิร์ฟเวอร์ส่งคืน JSON ในเนื้อหาซึ่งมี: errorMessage: "This ID does not exist". ไม่สนใจข้อเท็จจริงที่เซิร์ฟเวอร์ระบุรหัสเริ่มต้นนั่นเป็นปัญหาแยกต่างหากสำหรับนักพัฒนา REST API ควรส่งคืน a 500 Internal Server Errorเพื่อรายงานว่าแบบสอบถามอ้างอิงวัตถุที่ไม่มีอยู่หรือไม่? ตามความคิดของฉันรหัสตอบกลับ HTTP ควรอ้างอิงอย่างเคร่งครัดถึงสถานะของการเรียกใช้ REST แทนที่จะใช้กลไกภายในของ API ฉันคาดหวังว่าจะ200 OKมีการตอบสนองที่มีข้อผิดพลาดและคำอธิบายซึ่งจะเป็นกรรมสิทธิ์ของ API ที่เป็นปัญหา มันเกิดขึ้นกับฉันว่ามีความคาดหวังที่แตกต่างกันขึ้นอยู่กับว่าการเรียกใช้ REST นั้นมีโครงสร้างอย่างไร ลองพิจารณาตัวอย่างเหล่านี้: …

6
ควรแสดงข้อมูลเกี่ยวกับข้อผิดพลาดแก่ผู้ใช้มากน้อยเพียงใด
แอปพลิเคชันสามารถโยนข้อผิดพลาดได้เสมอ หากมีข้อผิดพลาดเกิดขึ้นผู้ใช้ควรได้รับการแจ้งเตือนเพราะสิ่งที่เขาขอให้แอปพลิเคชันทำไม่สำเร็จ อย่างไรก็ตามผู้ใช้ควรได้รับข้อมูลเท่าไหร่? ฉันคิดว่าพวกเราส่วนใหญ่เห็นด้วยที่จะไม่แสดงการติดตามสแต็ก ( ควรติดตามสแต็กในข้อความแสดงข้อผิดพลาดที่ปรากฏแก่ผู้ใช้หรือไม่ ) แต่ฉันไม่พบคำถามเกี่ยวกับเนื้อหาข้อผิดพลาดที่เหลือหรือสิ่งที่จะแสดงต่อ ผู้ใช้งาน ตัวอย่างเช่นภาษาที่รองรับข้อยกเว้น (.net, java) มีประเภทข้อยกเว้นที่จะแบ่งปันโดยที่ข้อยกเว้นเกิดขึ้นและข้อความที่ค่อนข้างชัดเจนเพื่อให้สอดคล้องกับข้อยกเว้น สิ่งนี้ควรถูกซ่อนจากผู้ใช้ด้วยหรือไม่ หรือเราควรแสดงสิ่งนี้ต่อไป? หรือเราควรแสดงข้อความทั่วไป? หรือเราควรแสดงหนึ่งในจำนวนข้อความตามข้อยกเว้นพื้นฐานคืออะไร

15
อาร์กิวเมนต์สำหรับหรือต่อต้านการใช้ลอง / จับเป็นตัวดำเนินการเชิงตรรกะ [ปิด]
ฉันเพิ่งค้นพบโค้ดที่น่ารักในแอพ บริษัท ของเราที่ใช้บล็อก Try-Catch เป็นตัวดำเนินการเชิงตรรกะ หมายความว่า "ทำรหัสบางอย่างถ้านั่นทำให้เกิดข้อผิดพลาดนี้ให้ทำรหัสนี้ แต่ถ้านั่นทำให้เกิดข้อผิดพลาดนี้ให้ทำสิ่งที่ 3 แทน" มันใช้ "สุดท้าย" เป็นคำสั่ง "อื่น" ที่ปรากฏ ฉันรู้ว่านี่เป็นความผิดโดยเนื้อแท้ แต่ก่อนที่ฉันจะเลือกการต่อสู้ฉันหวังว่าจะมีข้อโต้แย้งที่คิดออกมาดี และเฮ้ถ้าคุณมีข้อโต้แย้งสำหรับการใช้ลองจับในลักษณะนี้โปรดบอก สำหรับผู้ที่สงสัยภาษาคือ C # และรหัสที่เป็นปัญหานั้นมีประมาณ 30+ บรรทัดและกำลังมองหาข้อยกเว้นเฉพาะมันไม่ได้จัดการข้อยกเว้นทั้งหมด

7
ข้อโต้แย้งต่อต้านการปราบปรามข้อผิดพลาด
ฉันพบโค้ดบางส่วนในโครงการของเรา: SomeClass QueryServer(string args) { try { return SomeClass.Parse(_server.Query(args)); } catch (Exception) { return null; } } เท่าที่ฉันเข้าใจการระงับข้อผิดพลาดเช่นนี้เป็นการปฏิบัติที่ไม่ดีเนื่องจากเป็นการทำลายข้อมูลที่เป็นประโยชน์จากข้อยกเว้นของเซิร์ฟเวอร์ดั้งเดิมและทำให้รหัสดำเนินการต่อเมื่อควรยุติ เมื่อใดที่เหมาะสมที่จะระงับข้อผิดพลาดทั้งหมดเช่นนี้

9
เป็นไปได้ไหมที่จะเขียนข้อความยืนยันมากเกินไป?
ฉันเป็นแฟนตัวยงของการassertตรวจสอบการเขียนในรหัส C ++ เป็นวิธีการตรวจสอบกรณีในระหว่างการพัฒนาที่ไม่สามารถเกิดขึ้นได้ แต่จะเกิดขึ้นเพราะข้อบกพร่องตรรกะในโปรแกรมของฉัน เป็นการปฏิบัติที่ดีโดยทั่วไป อย่างไรก็ตามฉันสังเกตเห็นว่าบางฟังก์ชั่นที่ฉันเขียน (ซึ่งเป็นส่วนหนึ่งของคลาสที่ซับซ้อน) มีการยืนยันมากกว่า 5+ ครั้งซึ่งรู้สึกว่ามันอาจเป็นการฝึกเขียนโปรแกรมที่ไม่ดีในแง่ของความสามารถในการอ่านและการบำรุงรักษา ฉันคิดว่ามันยังยอดเยี่ยมเพราะแต่ละคนต้องการให้ฉันคิดเกี่ยวกับฟังก์ชั่นก่อนและหลังการทำงานและพวกเขาช่วยดักจับแมลง อย่างไรก็ตามฉันแค่อยากจะเอามันออกไปถามว่ามีกระบวนทัศน์ที่ดีกว่าสำหรับการจับข้อผิดพลาดทางตรรกะในกรณีที่จำเป็นต้องใช้เช็คจำนวนมากหรือไม่ ความเห็นของ Emacs : เนื่องจาก Emacs เป็นตัวเลือกของฉันฉันจึงขอแสดงความคิดเห็นเล็กน้อยซึ่งช่วยลดความรู้สึกรกรุงรังที่พวกเขาสามารถให้ได้ นี่คือสิ่งที่ฉันเพิ่มลงในไฟล์. emacs ของฉัน: ; gray out the "assert(...)" wrapper (add-hook 'c-mode-common-hook (lambda () (font-lock-add-keywords nil '(("\\<\\(assert\(.*\);\\)" 1 '(:foreground "#444444") t))))) ; gray out the stuff inside parenthesis with a slightly lighter …

3
ที่อยู่ 0000000C เป็นที่อยู่พิเศษหรือไม่
เมื่อการเขียนโปรแกรมบางครั้งสิ่งที่แตก คุณทำผิดพลาดและโปรแกรมของคุณพยายามอ่านจากที่อยู่ผิด สิ่งหนึ่งที่โดดเด่นสำหรับฉันที่มักจะมีข้อยกเว้นเหล่านั้น: Access violation at address 012D37BC in module 'myprog.exe'. Read of address 0000000C. ตอนนี้ฉันเห็นบันทึกข้อผิดพลาดมากมายและสิ่งที่โดดเด่นสำหรับฉันคือ: 0000000C นี่เป็นที่อยู่ "พิเศษ" หรือไม่ ฉันเห็นการละเมิดการเข้าถึงอื่น ๆ ที่มีการอ่านที่ไม่ดี แต่ที่อยู่ดูเหมือนจะสุ่ม แต่ที่นี่กลับมาในสถานการณ์ที่แตกต่างกันโดยสิ้นเชิง

7
มันโอเคที่จะใช้ข้อยกเว้นเป็นเครื่องมือในการ "จับ" ข้อผิดพลาดก่อนหรือไม่?
ฉันใช้ข้อยกเว้นเพื่อตรวจสอบปัญหาก่อน ตัวอย่างเช่น: public int getAverageAge(Person p1, Person p2){ if(p1 == null || p2 == null) throw new IllegalArgumentException("One or more of input persons is null"). return (p1.getAge() + p2.getAge()) / 2; } โปรแกรมของฉันไม่ควรผ่านnullในฟังก์ชั่นนี้ ฉันไม่เคยตั้งใจที่จะ อย่างไรก็ตามในขณะที่เราทุกคนรู้ว่าสิ่งที่ไม่ได้ตั้งใจเกิดขึ้นในการเขียนโปรแกรม การโยนข้อยกเว้นหากปัญหานี้เกิดขึ้นช่วยให้ฉันสามารถตรวจสอบและแก้ไขได้ก่อนที่จะทำให้เกิดปัญหามากขึ้นในที่อื่น ๆ ในโปรแกรม ข้อยกเว้นหยุดโปรแกรมและบอกฉันว่า "มีสิ่งไม่ดีเกิดขึ้นที่นี่แก้ไขได้" แทนที่จะเป็นการnullเคลื่อนไหวรอบ ๆ โปรแกรมทำให้เกิดปัญหาที่อื่น ตอนนี้คุณพูดถูกในกรณีนี้มันอาจnullจะทำให้เกิดNullPointerExceptionในทันทีดังนั้นมันอาจไม่ใช่ตัวอย่างที่ดีที่สุด แต่ให้พิจารณาวิธีการเช่นนี้ตัวอย่างเช่น: public void registerPerson(Person person){ persons.add(person); …

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

6
ตัวชี้ null กับรูปแบบวัตถุ Null
การแสดงที่มา: สิ่งนี้เกิดจากคำถาม P.SEที่เกี่ยวข้อง พื้นหลังของฉันอยู่ใน C / C ++ แต่ฉันได้ทำงานในจำนวนที่เป็นธรรมใน Java และฉันกำลังเข้ารหัส C # เนื่องจากพื้นหลัง C ของฉันการตรวจสอบพอยน์เตอร์ที่ผ่านและส่งคืนนั้นเป็นของมือสอง แต่ฉันยอมรับว่ามันมีอคติต่อมุมมองของฉัน ฉันเพิ่งเห็นการกล่าวถึงรูปแบบวัตถุ Nullซึ่งแนวคิดก็คือวัตถุจะถูกส่งคืนเสมอ กรณีปกติส่งคืนวัตถุที่คาดหวังที่มีประชากรและกรณีข้อผิดพลาดส่งคืนวัตถุว่างเปล่าแทนตัวชี้โมฆะ สถานที่ตั้งเป็นฟังก์ชั่นการโทรจะมีวัตถุบางอย่างให้เข้าถึงและหลีกเลี่ยงการละเมิดการเข้าถึงหน่วยความจำที่เป็นโมฆะ ดังนั้นข้อดี / ข้อเสียของการตรวจสอบค่า null เมื่อเปรียบเทียบกับการใช้รูปแบบวัตถุ Null คืออะไร ฉันสามารถเห็นรหัสการโทรที่สะอาดขึ้นด้วย NOP แต่ฉันยังสามารถดูได้ว่ามันจะสร้างความล้มเหลวที่ซ่อนอยู่ที่ไม่ได้รับการยก ฉันต้องการให้แอปพลิเคชันของฉันล้มเหลวอย่างหนัก (หรือเป็นข้อยกเว้น) ในขณะที่ฉันกำลังพัฒนามันมากกว่าที่จะมีข้อผิดพลาดเงียบ ๆ หลบเข้าไปในป่า รูปแบบวัตถุ Null ไม่สามารถมีปัญหาที่คล้ายกันกับที่ไม่ทำการตรวจสอบเป็นโมฆะ? วัตถุหลายอย่างที่ฉันได้ทำงานกับวัตถุหรือภาชนะบรรจุของตัวเอง ดูเหมือนว่าฉันจะต้องมีกรณีพิเศษเพื่อรับประกันว่าภาชนะบรรจุวัตถุหลักทั้งหมดมีวัตถุเปล่าของตัวเอง ดูเหมือนว่าสิ่งนี้จะน่าเกลียดด้วยการซ้อนกันหลายชั้น

4
การจัดการข้อยกเว้นสไตล์การทำงาน
ฉันได้รับการบอกว่าในการเขียนโปรแกรมทำงานไม่ควรโยนและ / หรือสังเกตข้อยกเว้น ควรคำนวณการคำนวณที่ผิดพลาดแทนค่าล่าง ในภาษาไพ ธ อน (หรือภาษาอื่นที่ไม่สนับสนุนการเขียนโปรแกรมเชิงฟังก์ชันอย่างสมบูรณ์) เราสามารถส่งคืนNone(หรืออีกทางเลือกหนึ่งที่ถือว่าเป็นค่าที่ต่ำที่สุด แต่Noneไม่ปฏิบัติตามคำจำกัดความอย่างเคร่งครัด) เมื่อใดก็ตามที่บางสิ่งผิดปกติ ดังนั้นหนึ่งจะต้องสังเกตข้อผิดพลาดในสถานที่แรกคือ def fn(*args): try: ... do something except SomeException: return None สิ่งนี้เป็นการละเมิดความบริสุทธิ์หรือไม่ และถ้าเป็นเช่นนั้นหมายความว่าเป็นไปไม่ได้ที่จะจัดการกับข้อผิดพลาดใน Python อย่างแท้จริงหรือไม่? ปรับปรุง ในความคิดเห็นของเขา Eric Lippert ทำให้ฉันนึกถึงอีกวิธีหนึ่งในการรักษาข้อยกเว้นใน FP แม้ว่าฉันจะไม่เคยเห็นแบบนั้นใน Python ในทางปฏิบัติ แต่ฉันก็เล่นกับมันเมื่อฉันศึกษา FP เมื่อปีที่แล้ว optionalฟังก์ชันใด ๆ-decorated จะส่งคืนOptionalค่าซึ่งสามารถว่างได้สำหรับเอาต์พุตปกติเช่นเดียวกับรายการข้อยกเว้นที่ระบุ (ข้อยกเว้นที่ไม่ระบุยังคงสามารถยุติการดำเนินการได้) Carryสร้างการประเมินผลที่ล่าช้าซึ่งแต่ละขั้นตอน (ล่าช้าเรียกฟังก์ชัน) อย่างใดอย่างหนึ่งได้รับการว่างเอาท์พุทจากขั้นตอนก่อนและก็ผ่านมันบนหรือประเมินตัวเองผ่านใหม่Optional ในตอนท้ายของค่าสุดท้ายเป็นเรื่องปกติหรือไม่Optional Emptyนี่คือtry/exceptบล็อกที่ซ่อนอยู่หลังมัณฑนากรดังนั้นข้อยกเว้นที่ระบุสามารถถือได้ว่าเป็นส่วนหนึ่งของลายเซ็นประเภทส่งคืน class Empty: def …

3
ใน C # เหตุใดจึงมีการประกาศตัวแปรภายในบล็อกลองในขอบเขต
ฉันต้องการเพิ่มข้อผิดพลาดในการจัดการ: var firstVariable = 1; var secondVariable = firstVariable; ด้านล่างจะไม่รวบรวม: try { var firstVariable = 1; } catch {} try { var secondVariable = firstVariable; } catch {} เหตุใดจึงจำเป็นสำหรับ try catch block ที่จะส่งผลต่อขอบเขตของตัวแปรเช่นเดียวกับบล็อคโค้ดอื่น ๆ เห็นแก่ความสอดคล้องกันมันจะสมเหตุสมผลหรือไม่ที่เราจะสามารถห่อโค้ดของเราด้วยการจัดการข้อผิดพลาดโดยไม่จำเป็นต้อง refactor

2
วิธีที่สะอาดที่สุดในการรายงานข้อผิดพลาดใน Haskell
ฉันทำงานเกี่ยวกับการเรียนรู้ Haskell และฉันเจอวิธีการจัดการกับข้อผิดพลาดสามวิธีในฟังก์ชั่นที่ฉันเขียน: ฉันสามารถเขียนได้ง่ายerror "Some error message."ซึ่งมีข้อยกเว้น ฉันสามารถรับฟังก์ชั่นการส่งคืนMaybe SomeTypeซึ่งฉันสามารถหรือไม่สามารถคืนสิ่งที่ฉันต้องการคืนได้ ฉันสามารถใช้ฟังก์ชันส่งคืนEither String SomeTypeได้ซึ่งฉันสามารถส่งคืนข้อความแสดงข้อผิดพลาดหรือสิ่งที่ถูกขอให้ส่งคืนได้ตั้งแต่แรก คำถามของฉันคือฉันควรใช้วิธีใดในการจัดการกับข้อผิดพลาดและเพราะเหตุใด บางทีฉันควรวิธีการที่แตกต่างกันขึ้นอยู่กับบริบทหรือไม่ ความเข้าใจปัจจุบันของฉันคือ: มันเป็น "ยาก" ที่จะจัดการกับข้อยกเว้นในรหัสการทำงานอย่างหมดจดและใน Haskell หนึ่งต้องการให้สิ่งต่าง ๆ ทำงานได้อย่างหมดจดที่สุด การกลับมาMaybe SomeTypeเป็นสิ่งที่เหมาะสมที่จะทำถ้าฟังก์ชั่นจะล้มเหลวหรือประสบความสำเร็จ (เช่นไม่มีวิธีที่แตกต่างกันที่มันจะล้มเหลว ) การกลับมาEither String SomeTypeเป็นสิ่งที่ควรทำหากฟังก์ชั่นสามารถล้มเหลวได้หลายวิธี

3
วิธีจัดการข้อผิดพลาดหลังการตรวจสอบความถูกต้องในคำสั่ง (DDD + CQRS)
ตัวอย่างเช่นเมื่อคุณส่งแบบฟอร์มลงทะเบียนคุณจะต้องตรวจสอบในDomain Model( WriteModelในCQRS) ว่ามันอยู่ในสถานะที่ถูกต้อง (ตัวอย่างไวยากรณ์ที่อยู่อีเมลอายุ ฯลฯ ) จากนั้นคุณสร้างและส่งไปยังCommandCommand Bus ฉันเข้าใจว่าคำสั่งไม่ควรส่งคืนสิ่งใด ดังนั้นคุณจะจัดการกับข้อผิดพลาดได้Command Busอย่างไร (ตัวอย่างเช่นผู้ใช้ที่ลงทะเบียน 1 วินาทีก่อนหน้านี้ด้วยเหมือนกันusername/email) คุณรู้ได้อย่างไรว่าคำสั่งนั้นล้มเหลวและคุณรู้ได้อย่างไรว่ามีข้อผิดพลาด?

2
สถาปัตยกรรมแบบหลายชั้น: สถานที่ที่ฉันควรใช้การบันทึกข้อผิดพลาด \ การจัดการ?
ขณะนี้ฉันกำลังปรับโครงสร้างระบบย่อยขนาดใหญ่ด้วยสถาปัตยกรรมหลายเลเยอร์และฉันพยายามดิ้นรนเพื่อออกแบบกลยุทธ์การบันทึกข้อผิดพลาด \ การจัดการที่มีประสิทธิภาพ สมมติว่าสถาปัตยกรรมของฉันประกอบด้วยสามชั้นต่อไปนี้: ส่วนต่อประสานสาธารณะ (IE เป็น MVC Controller) เลเยอร์โดเมน ชั้นการเข้าถึงข้อมูล แหล่งที่มาของความสับสนของฉันคือที่ฉันควรใช้การบันทึกข้อผิดพลาด \ การจัดการ: ทางออกที่ง่ายที่สุดคือการใช้การบันทึกที่ระดับบนสุด (IE the Public Interface \ MVC Controller) อย่างไรก็ตามสิ่งนี้รู้สึกผิดเพราะมันหมายถึงการทำให้ข้อยกเว้นผ่านเลเยอร์ที่แตกต่างกันแล้วบันทึกมัน แทนที่จะบันทึกข้อยกเว้นที่แหล่งที่มา การบันทึกข้อยกเว้นที่แหล่งที่มานั้นเป็นทางออกที่ดีที่สุดเพราะฉันมีข้อมูลมากที่สุด ปัญหาของฉันคือว่าฉันไม่สามารถตรวจจับทุกข้อยกเว้นที่แหล่งที่มาโดยไม่มีการยกเว้นข้อยกเว้นทั้งหมดและในเลเยอร์อินเทอร์เฟซของโดเมน / สาธารณะสิ่งนี้จะนำไปสู่การตรวจจับข้อยกเว้นที่ถูกจับบันทึกไว้แล้ว . อีกกลยุทธ์ที่เป็นไปได้คือการผสมผสานของ # 1 และ # 2; โดยที่ฉันตรวจจับข้อยกเว้นเฉพาะที่เลเยอร์พวกเขามักจะถูกโยน (IE Catching, การบันทึกและการโยนอีกครั้งSqlExceptionsใน Data Access Layer) แล้วบันทึกข้อยกเว้นที่ไม่ถูกตรวจจับเพิ่มเติมที่ระดับบนสุด อย่างไรก็ตามสิ่งนี้จะทำให้ฉันต้องจับและเชื่อมต่อใหม่ทุกข้อยกเว้นที่ระดับบนสุดเพราะฉันไม่สามารถแยกแยะความผิดพลาดระหว่างข้อผิดพลาดที่ได้รับการจัดการ \ จัดการกับข้อผิดพลาดที่ไม่มี ตอนนี้เห็นได้ชัดว่านี่เป็นปัญหาในแอปพลิเคชั่นซอฟต์แวร์ส่วนใหญ่ดังนั้นจึงต้องมีวิธีแก้ไขปัญหามาตรฐานที่ทำให้เกิดข้อยกเว้นในการจับแหล่งที่มาและบันทึกครั้งเดียว แต่ฉันไม่สามารถเห็นวิธีการทำสิ่งนี้ด้วยตัวเอง หมายเหตุชื่อของคำถามนี้คล้ายกับ ' …

3
ฟังก์ชันตัวตรวจสอบค่าของฉันต้องส่งคืนทั้งบูลีนและข้อความ
ฉันมีฟังก์ชั่นตรวจสอบค่าบางอย่างคล้ายกับฟังก์ชั่นตรวจสอบหมายเลขบัตรเครดิตที่ส่งผ่านมาในสตริงและต้องตรวจสอบว่าค่าเป็นรูปแบบที่ถูกต้อง หากเป็นรูปแบบที่ถูกต้องจะต้องส่งคืนจริง หากไม่ใช่รูปแบบที่ถูกต้องจะต้องส่งคืนค่าเท็จและแจ้งให้เราทราบว่ามีอะไรผิดปกติกับมูลค่า คำถามคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้คืออะไร นี่คือวิธีแก้ปัญหาบางประการ: 1. ใช้รหัสส่งคืนจำนวนเต็ม / enum เพื่อแสดงความหมาย: String[] returnCodeLookup = [ "Value contains wrong number of characters, should contain 10 characters", "Value should end with 1", "Value should be a multiple of 3" ] private int valueChecker(String value) { /*check value*/ return returnCode; } rc = checkValue(valueToBeChecked); …

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