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

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

3
ไม่พบข้อยกเว้นของงานโดยการรอบนงานหรือการเข้าถึงคุณสมบัติข้อยกเว้น เป็นผลให้ข้อยกเว้นที่ไม่สามารถสังเกตได้คือ
สิ่งนี้หมายความว่าอย่างไรและจะแก้ไขได้อย่างไร? ฉันใช้งาน TPL ข้อผิดพลาดทั้งหมด ไม่พบข้อยกเว้นของงานโดยการรอบนงานหรือการเข้าถึงคุณสมบัติข้อยกเว้น ด้วยเหตุนี้ข้อยกเว้นที่ไม่สามารถสังเกตได้จึงถูกเปลี่ยนใหม่โดยเธรด Finalizer ใน System.Threading.Tasks.TaskExceptionHolder.Finalize () mscorlib

3
ความแตกต่างระหว่าง C ++ 03 throw () specifier C ++ 11 noexcept
มีความแตกต่างระหว่าง throw()และnoexceptอื่น ๆ นอกเหนือจากการตรวจสอบที่รันไทม์และรวบรวมเวลาตามลำดับ? บทความ Wikipedia C ++ 11 นี้ชี้ให้เห็นว่าตัวระบุการโยน C ++ 03 เลิกใช้งานแล้ว เหตุใดจึงมีnoexceptความสามารถเพียงพอที่จะครอบคลุมทุกสิ่งในเวลาคอมไพล์ [หมายเหตุ: ฉันตรวจสอบคำถามนี้และบทความนี้แล้ว แต่ไม่สามารถระบุเหตุผลที่ชัดเจนในการเลิกใช้งานได้]
100 c++  exception  c++11  throw  noexcept 

15
โยนข้อยกเว้นในบล็อกสุดท้าย
มีวิธีที่สวยงามในการจัดการข้อยกเว้นที่เกิดขึ้นในfinallyบล็อกหรือไม่? ตัวอย่างเช่น: try { // Use the resource. } catch( Exception ex ) { // Problem with the resource. } finally { try{ resource.close(); } catch( Exception ex ) { // Could not close the resource? } } คุณจะหลีกเลี่ยงtry/ catchในfinallyบล็อกได้อย่างไร?

3
มีความแตกต่างระหว่าง "Raise except ()" และ "Raise except" โดยไม่มีวงเล็บหรือไม่
การกำหนดข้อยกเว้นแบบไม่มีพารามิเตอร์: class MyException(Exception): pass เมื่อยกขึ้นมีความแตกต่างระหว่าง: raise MyException และ raise MyException() ฉันไม่พบเลย มันเป็นเพียงไวยากรณ์ที่มากเกินไปหรือไม่?
100 python  exception 

14
ฉันควรสืบทอดจาก std :: ข้อยกเว้นหรือไม่
ผมเคยเห็นแหล่งที่เชื่อถือได้อย่างน้อยหนึ่ง (คลาส c ++ ผมเอา) ขอแนะนำให้ใช้เฉพาะการเรียนการยกเว้นใน C ++ std::exceptionควรสืบทอดจาก ฉันไม่ชัดเจนเกี่ยวกับประโยชน์ของแนวทางนี้ ใน C # เหตุผลในการสืบทอดApplicationExceptionนั้นชัดเจน: คุณจะได้รับวิธีการคุณสมบัติและตัวสร้างที่เป็นประโยชน์จำนวนหนึ่งและต้องเพิ่มหรือแทนที่สิ่งที่คุณต้องการ ด้วยstd::exceptionมันก็ดูเหมือนว่าสิ่งที่คุณได้รับคือwhat()วิธีการที่จะแทนที่ซึ่งคุณสามารถเช่นเดียวกับดีสร้างขึ้นเอง ดังนั้นประโยชน์ของการใช้std::exceptionเป็นคลาสพื้นฐานสำหรับคลาสข้อยกเว้นเฉพาะแอปพลิเคชันของฉันคืออะไร? มีเหตุผลที่ดีที่จะไม่สืบทอดstd::exceptionหรือไม่?

3
ค่าใช้จ่ายของตัวจัดการข้อยกเว้นใน Python
ในคำถามอื่นคำตอบที่ยอมรับได้แนะนำให้แทนที่คำสั่ง if (ถูกมาก) ในโค้ด Python ด้วยบล็อก try / except เพื่อปรับปรุงประสิทธิภาพ สไตล์การเข้ารหัสมีปัญหากันและสมมติว่าไม่มีการเรียกใช้ข้อยกเว้นจะทำให้มีตัวจัดการข้อยกเว้น (ประสิทธิภาพที่ชาญฉลาด) แตกต่างกันมากน้อยเพียงใดเมื่อเทียบกับการไม่มี if-statement ที่เปรียบเทียบกับศูนย์

6
ควรโยน IllegalArgumentException เมื่อใด
ฉันกังวลว่านี่เป็นข้อยกเว้นรันไทม์ดังนั้นจึงควรใช้เท่าที่จำเป็น กรณีการใช้งานมาตรฐาน: void setPercentage(int pct) { if( pct < 0 || pct > 100) { throw new IllegalArgumentException("bad percent"); } } แต่ดูเหมือนว่าจะบังคับให้ออกแบบต่อไปนี้: public void computeScore() throws MyPackageException { try { setPercentage(userInputPercent); } catch(IllegalArgumentException exc){ throw new MyPackageException(exc); } } เพื่อให้กลับมาเป็นข้อยกเว้นที่ถูกตรวจสอบ เอาล่ะ แต่มาดูกันดีกว่า หากคุณป้อนข้อมูลไม่ถูกต้องคุณจะได้รับข้อผิดพลาดรันไทม์ ประการแรกนั่นเป็นนโยบายที่ค่อนข้างยากในการนำไปใช้อย่างสม่ำเสมอเพราะคุณอาจต้องทำการแปลงตรงกันข้าม: public void scanEmail(String emailStr, InputStream mime) …

4
เหตุใดผลตอบแทนจึงไม่ปรากฏในบล็อกลองด้วยการจับ
ต่อไปนี้ไม่เป็นไร: try { Console.WriteLine("Before"); yield return 1; Console.WriteLine("After"); } finally { Console.WriteLine("Done"); } finallyบล็อกทำงานเมื่อสิ่งที่ทั้งได้เสร็จสิ้นการดำเนินการ ( IEnumerator<T>การสนับสนุนIDisposableเพื่อให้วิธีการที่จะให้แน่ใจว่านี้แม้ในขณะที่นับถูกยกเลิกก่อนที่มันจะเสร็จสิ้น) แต่ไม่เป็นไร: try { Console.WriteLine("Before"); yield return 1; // error CS1626: Cannot yield a value in the body of a try block with a catch clause Console.WriteLine("After"); } catch (Exception e) { Console.WriteLine(e.Message); } สมมติว่า …
98 c#  exception  yield 

8
การแก้ไขปัญหา“ ช่องที่เกี่ยวข้องมีการค้นหาที่ไม่ถูกต้อง: icontains”
ฉันมีโมเดลต่อไปนี้ในmodels.py: class ListinoTraduttore(models.Model): traduttore = models.ForeignKey('Traduttore', related_name='Traduttore') linguaDa = models.ForeignKey(Lingua, related_name = "linguaDa") linguaA = models.ForeignKey(Lingua, related_name = "linguaA") prezzoParola = models.CharField(max_length=50, blank=True) prezzoRiga = models.CharField(max_length=50, blank=True) scontoCat = models.CharField(max_length=50, blank=True) scontoFuzzy = models.CharField(max_length=50, blank=True) scontoRipetizioni = models.CharField(max_length=50, blank=True) class Meta: verbose_name_plural = "Listini Traduttori" def __unicode__(self): return u"%s Da …

4
วิธีรับข้อความยกเว้นใน Python อย่างถูกต้อง
วิธีใดเป็นวิธีที่ดีที่สุดในการรับข้อความยกเว้นจากส่วนประกอบของไลบรารีมาตรฐานใน Python ฉันสังเกตเห็นว่าในบางกรณีคุณสามารถรับได้จากmessageฟิลด์เช่นนี้: try: pass except Exception as ex: print(ex.message) แต่ในบางกรณี (ตัวอย่างเช่นในกรณีของข้อผิดพลาดของซ็อกเก็ต) คุณต้องทำสิ่งนี้: try: pass except socket.error as ex: print(ex) ฉันสงสัยว่ามีวิธีมาตรฐานใดบ้างที่จะครอบคลุมสถานการณ์เหล่านี้ส่วนใหญ่

14
Python: ลองใช้คำสั่งในบรรทัดเดียว
มีวิธีใน python ในการเปลี่ยนลอง / ยกเว้นเป็นบรรทัดเดียวหรือไม่? สิ่งที่ต้องการ... b = 'some variable' a = c | b #try statement goes here bตัวแปรที่ประกาศอยู่ที่ไหนและcไม่ใช่ ... ดังนั้นcจะทำให้เกิดข้อผิดพลาดและaจะกลายเป็นb...

30
คราส - java.lang.ClassNotFoundException
เมื่อพยายามเริ่ม JUnit-Test จาก Eclipse ฉันจะได้รับ "ClassNotFoundException" เมื่อเรียกใช้ "mvn test" จากคอนโซลทุกอย่างทำงานได้ดี นอกจากนี้ไม่มีรายงานปัญหาใน Eclipse โครงสร้างโครงการของฉันมีดังต่อไปนี้: โครงการแม่ (pom-packaging) โครงการเว็บ (บรรจุภัณฑ์สงคราม - การทดสอบ JUnit ของฉันอยู่ที่นี่) โครงการ Flex โครงการกำหนดค่า แก้ไข: ไม่พบคลาสได้อย่างไร? เป็นแอปพลิเคชัน HelloWorld ที่เรียบง่ายโดยไม่มีไลบรารีพิเศษ นี่คือการกำหนดค่าการเรียกใช้ JUnit ของฉัน: ข้อความแสดงแทน http://www.walkner.biz/_temp/runconfig.png Testclass (แต่อย่างที่บอกมันใช้ไม่ได้กับ HelloWorld แบบธรรมดาเช่นกัน ... ): import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; …

7
ฉันควรระบุประเภทข้อยกเว้นในคำสั่ง "except" เสมอหรือไม่
เมื่อใช้ PyCharm IDE ใช้except:โดยไม่มีการยกเว้นประเภททริกเกอร์การแจ้งเตือนจาก IDE Too broadที่ข้อยกเว้นนี้เป็น ฉันควรเพิกเฉยต่อคำแนะนำนี้หรือไม่? หรือว่า Pythonic ระบุประเภทข้อยกเว้นเสมอ?
96 python  exception  pep8 

4
คลาสข้อผิดพลาดที่กำหนดเองของ Ruby: การสืบทอดแอตทริบิวต์ข้อความ
ดูเหมือนจะหาข้อมูลเกี่ยวกับคลาสข้อยกเว้นแบบกำหนดเองไม่ได้มากนัก สิ่งที่ฉันรู้ คุณสามารถประกาศคลาสข้อผิดพลาดที่กำหนดเองและปล่อยให้สืบทอดจากStandardErrorดังนั้นจึงเป็นrescued: class MyCustomError < StandardError end สิ่งนี้ช่วยให้คุณสามารถเพิ่มได้โดยใช้: raise MyCustomError, "A message" และรับข้อความนั้นในภายหลังเมื่อช่วยชีวิต rescue MyCustomError => e puts e.message # => "A message" อะไรไม่รู้ ฉันต้องการยกเว้นฟิลด์ที่กำหนดเองของฉัน แต่ฉันต้องการสืบทอดmessageแอตทริบิวต์จากคลาสแม่ ผมพบว่าการอ่านในหัวข้อนี้ที่@messageไม่ได้เป็นตัวแปรเช่นการเรียนการยกเว้นดังนั้นฉันกังวลว่ามรดกของฉันจะไม่ทำงาน ใครสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้ได้หรือไม่? ฉันจะใช้คลาสข้อผิดพลาดที่กำหนดเองกับobjectแอตทริบิวต์ได้อย่างไร ถูกต้องดังต่อไปนี้: class MyCustomError < StandardError attr_reader :object def initialize(message, object) super(message) @object = object end end แล้ว: raise MyCustomError.new(anObject), "A …


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