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

14
แนวทางปฏิบัติที่ดีที่สุดสำหรับ Python ยืนยัน
มีปัญหาด้านประสิทธิภาพหรือการบำรุงรักษารหัสเมื่อใช้assertเป็นส่วนหนึ่งของรหัสมาตรฐานแทนที่จะใช้เพื่อการดีบักหรือไม่ คือ assert x >= 0, 'x is less than zero' ดีกว่าหรือแย่กว่า if x < 0: raise Exception, 'x is less than zero' นอกจากนี้ยังมีวิธีการตั้งกฎทางธุรกิจเช่นif x < 0 raise errorนั้นที่จะถูกตรวจสอบโดยไม่ต้องทำtry/except/finallyเช่นนั้นตลอดเวลาหากรหัสตลอดเวลาxน้อยกว่า 0 ข้อผิดพลาดจะเพิ่มขึ้นเช่นถ้าคุณตั้งไว้assert x < 0ที่จุดเริ่มต้นของฟังก์ชั่น ที่ไหนxจะกลายเป็น 0 แล้วมีข้อยกเว้นยก

4
จะเพิ่มข้อยกเว้นอีกครั้งในบล็อก try / except แบบซ้อนได้อย่างไร
ฉันรู้ว่าถ้าฉันต้องการเพิ่มข้อยกเว้นอีกครั้งฉันใช้ง่ายๆraiseโดยไม่มีข้อโต้แย้งในexceptบล็อกที่เกี่ยวข้อง แต่ได้รับการแสดงออกที่ซ้อนกันเช่น try: something() except SomeError as e: try: plan_B() except AlsoFailsError: raise e # I'd like to raise the SomeError as if plan_B() # didn't raise the AlsoFailsError ฉันจะเพิ่มอีกครั้งSomeErrorโดยไม่ทำลายสแต็กเทรซได้อย่างไร เพียงอย่างเดียวจะในกรณีนี้อีกครั้งเพิ่มมากขึ้นล่าสุดraise AlsoFailsErrorหรือฉันจะ refactor รหัสของฉันเพื่อหลีกเลี่ยงปัญหานี้ได้อย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.