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

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

5
ทำไม Java ไม่อนุญาตให้มีคลาสย่อยทั่วไปของ Throwable
ตามการแยกภาษา Javaรุ่นที่ 3: มันเป็นข้อผิดพลาดเวลารวบรวมถ้าระดับทั่วไปเป็น subclass Throwableโดยตรงหรือโดยอ้อมของ ฉันต้องการเข้าใจว่าทำไมการตัดสินใจครั้งนี้จึงเกิดขึ้น เกิดอะไรขึ้นกับข้อยกเว้นทั่วไป (เท่าที่ฉันรู้ generics เป็นเพียงการรวบรวมเวลา syntactic น้ำตาลและพวกเขาจะถูกแปลเป็นObjectอย่างไรก็ตามใน.classไฟล์ดังนั้นการประกาศคลาสทั่วไปอย่างมีประสิทธิภาพราวกับว่าทุกอย่างในนั้นเป็นObjectโปรดแก้ไขให้ฉันถ้าฉันผิด .)

5
ใช้วิธีการ NUnit Assert.Throws หรือแอตทริบิวต์ ExpectedException หรือไม่
ฉันได้ค้นพบว่าสิ่งเหล่านี้ดูเหมือนจะเป็นสองวิธีหลักในการทดสอบข้อยกเว้น: Assert.Throws<Exception>(()=>MethodThatThrows()); [ExpectedException(typeof(Exception))] ข้อใดจะดีที่สุด ข้อเสนอหนึ่งมีข้อได้เปรียบเหนือสิ่งอื่นหรือไม่? หรือมันเป็นเพียงเรื่องของการตั้งค่าส่วนตัว?

12
ฉันจะยกระดับข้อยกเว้นเดียวกันด้วยข้อความที่กำหนดเองใน Python ได้อย่างไร
ฉันมีtryบล็อกนี้ในรหัสของฉัน: try: do_something_that_might_raise_an_exception() except ValueError as err: errmsg = 'My custom error message.' raise ValueError(errmsg) พูดอย่างเคร่งครัดจริงๆแล้วฉันกำลังเลี้ยงดูคนอื่น ValueErrorไม่ใช่ที่ValueErrorถูกโยนทิ้งdo_something...()ซึ่งถูกอ้างถึงerrในกรณีนี้ ฉันจะแนบข้อความที่กำหนดเองได้errอย่างไร ฉันพยายามรหัสต่อไป แต่ล้มเหลวเนื่องจากerrเป็นValueError ตัวอย่างไม่เป็น callable: try: do_something_that_might_raise_an_exception() except ValueError as err: errmsg = 'My custom error message.' raise err(errmsg)

13
ข้อยกเว้น. NET มีความช้าเพียงใด
ฉันไม่ต้องการการสนทนาเกี่ยวกับเวลาและไม่โยนข้อยกเว้น ฉันต้องการแก้ไขปัญหาที่เรียบง่าย 99% ของเวลาที่การโต้เถียงไม่โยนข้อยกเว้นหมุนรอบตัวพวกเขาช้าในขณะที่อีกฝ่ายอ้างว่า (ด้วยการทดสอบเกณฑ์มาตรฐาน) ว่าความเร็วไม่ใช่ปัญหา ฉันได้อ่านบล็อกบทความและโพสต์มากมายที่เกี่ยวข้องกับด้านใดด้านหนึ่ง แล้วมันคืออะไร? การเชื่อมโยงจากการตอบ: เป้าบิน , Mariani , Brumme

9
กำลังเพิ่มข้อมูลลงในข้อยกเว้นหรือไม่
ฉันต้องการบรรลุสิ่งนี้: def foo(): try: raise IOError('Stuff ') except: raise def bar(arg1): try: foo() except Exception as e: e.message = e.message + 'happens at %s' % arg1 raise bar('arg1') Traceback... IOError('Stuff Happens at arg1') แต่สิ่งที่ฉันได้คือ: Traceback.. IOError('Stuff') เบาะแสใด ๆ เกี่ยวกับวิธีการบรรลุสิ่งนี้? วิธีทำทั้งใน Python 2 และ 3
142 python  exception 

3
Android Studio IDE: ทำลายข้อยกเว้น
ดูเหมือนว่า Android Studio ของฉันไม่ต้องการหยุดพักด้วยข้อยกเว้นใด ๆ ตามค่าเริ่มต้น การเปิดใช้งานตัวแบ่ง "ข้อยกเว้นใด ๆ " จะเริ่มทำลายภายในไลบรารี JDE จริง มีวิธีใดที่จะบังคับให้แตกเฉพาะในข้อยกเว้นภายในรหัสของฉันเท่านั้น มาจากจักรวาล Visual Studio กำลังมองหาพฤติกรรมการดีบัก VS เริ่มต้นที่นี่

28
เหตุใดจึงไม่มีการประกาศตัวแปรใน“ ลอง” ในขอบเขตใน“ จับ” หรือ“ ในที่สุด”?
ใน C # และใน Java (และภาษาอื่น ๆ ด้วย) ตัวแปรที่ประกาศในบล็อก "ลอง" ไม่ได้อยู่ในขอบเขตในบล็อก "catch" หรือ "สุดท้าย" ที่สอดคล้องกัน ตัวอย่างเช่นรหัสต่อไปนี้ไม่ได้รวบรวม: try { String s = "test"; // (more code...) } catch { Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead } ในรหัสนี้ข้อผิดพลาดเวลาคอมไพล์เกิดขึ้นในการอ้างอิงถึง s ใน catch block เนื่องจาก s อยู่ในขอบเขตในลองบล็อกเท่านั้น (ใน Java ข้อผิดพลาดในการคอมไพล์คือ "s ไม่สามารถแก้ไขได้" ใน …

18
java.lang.IllegalStateException: ไม่สามารถดำเนินการนี้หลังจาก onSaveInstanceState
ฉันใช้ไลบรารีการสนับสนุนสำหรับแอปของฉัน ใน FragmentActivity ของฉันฉันใช้ AsyncTask เพื่อดาวน์โหลดข้อมูลจากอินเทอร์เน็ต ในเมธอด onPreExecute () ฉันเพิ่ม Fragment และในเมธอด onPostExecute () ฉันลบมันอีกครั้ง เมื่อการวางแนวมีการเปลี่ยนแปลงในระหว่างนี้ฉันจะได้รับข้อยกเว้นดังกล่าวข้างต้น โปรดดูรายละเอียด: private class onFriendAddedAsyncTask extends AsyncTask<String, Void, String> { DummyFragment dummyFragment; FragmentManager fm; FragmentTransaction ft; @Override protected void onPreExecute() { Log.v("MyFragmentActivity", "onFriendAddedAsyncTask/onPreExecute"); dummyFragment = DummyFragment.newInstance(); fm = getSupportFragmentManager(); ft = fm.beginTransaction(); ft.add(dummyFragment, "dummy_fragment"); ft.commit(); …

8
เหตุใด Java จึงไม่อนุญาตให้โยนข้อยกเว้นที่ตรวจสอบจากบล็อกการเริ่มต้นแบบคงที่
เหตุใด Java จึงไม่อนุญาตให้โยนข้อยกเว้นที่ตรวจสอบแล้วจากบล็อกการเริ่มต้นแบบคงที่ อะไรคือเหตุผลที่อยู่เบื้องหลังการตัดสินใจออกแบบนี้

8
เหตุใด ConcurrentModificationException จึงถูกโยนทิ้งและวิธีการดีบัก
ฉันกำลังใช้ a Collection( HashMapใช้ทางอ้อมโดย JPA มันก็เกิดขึ้น) แต่ดูเหมือนจะสุ่มรหัสพ่น a ConcurrentModificationException. สาเหตุเกิดจากอะไรและจะแก้ไขปัญหานี้ได้อย่างไร โดยใช้การซิงโครไนซ์บางที? นี่คือการติดตามสแต็กแบบเต็ม: Exception in thread "pool-1-thread-1" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(Unknown Source) at java.util.HashMap$ValueIterator.next(Unknown Source) at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:555) at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296) at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242) at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219) at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169) at org.hibernate.engine.Cascade.cascade(Cascade.java:130)

12
จะใช้การรอและการแจ้งเตือนใน Java ได้อย่างไรโดยไม่ใช้
ฉันมีเมทริกซ์ 2 ตัวและต้องคูณพวกมันแล้วพิมพ์ผลลัพธ์ของแต่ละเซลล์ ทันทีที่เซลล์หนึ่งพร้อมฉันต้องพิมพ์ แต่ตัวอย่างเช่นฉันต้องพิมพ์เซลล์ [0] [0] ก่อนเซลล์ [2] [0] แม้ว่าผลลัพธ์ของ [2] [0] จะพร้อมก่อน . ดังนั้นฉันต้องพิมพ์ตามคำสั่ง ดังนั้นความคิดของฉันคือการทำให้เธรดเครื่องพิมพ์รอจนกว่าmultiplyThreadจะแจ้งให้ทราบว่าเซลล์ที่ถูกต้องพร้อมที่จะพิมพ์แล้วprinterThreadจะพิมพ์เซลล์และกลับไปรอเป็นต้น ดังนั้นฉันมีหัวข้อนี้ที่จะคูณ: public void run() { int countNumOfActions = 0; // How many multiplications have we done int maxActions = randomize(); // Maximum number of actions allowed for (int i = 0; i < …

7
Python: การเพิ่มข้อยกเว้นภายใน __init__ เป็นรูปแบบที่ไม่ดีหรือไม่?
การเพิ่มข้อยกเว้นภายในถือเป็นรูปแบบที่ไม่ดี__init__หรือไม่? ถ้าเป็นเช่นนั้นวิธีการใดที่ยอมรับได้ในการส่งข้อผิดพลาดเมื่อตัวแปรคลาสบางตัวเริ่มต้นเป็นNoneหรือประเภทที่ไม่ถูกต้อง
128 python  exception 


10
เหตุใด exception.printStackTrace () จึงถือว่าเป็นการปฏิบัติที่ไม่ดี
มีเป็นจำนวนมากของวัสดุออกมีซึ่งแสดงให้เห็นว่าการพิมพ์ร่องรอยสแต็คของข้อยกเว้นคือการปฏิบัติที่ไม่ดี เช่นจากการตรวจสอบ RegexpSingleline ใน Checkstyle: การตรวจสอบนี้สามารถใช้ [... ] เพื่อค้นหาแนวปฏิบัติที่ไม่ดีทั่วไปเช่นการเรียก ex.printStacktrace () อย่างไรก็ตามฉันกำลังดิ้นรนเพื่อค้นหาทุกที่ที่ให้เหตุผลที่ถูกต้องว่าทำไมการติดตามสแต็กจึงมีประโยชน์มากในการติดตามสิ่งที่ทำให้เกิดข้อยกเว้น สิ่งที่ฉันทราบ: ผู้ใช้ปลายทางไม่ควรมองเห็นสแต็กแทร็ก (สำหรับประสบการณ์ของผู้ใช้และวัตถุประสงค์ด้านความปลอดภัย) การสร้างสแต็กแทร็กเป็นกระบวนการที่ค่อนข้างแพง (แม้ว่าจะไม่น่าจะเป็นปัญหาในสถานการณ์ 'พิเศษ' ส่วนใหญ่) เฟรมเวิร์กการบันทึกจำนวนมากจะพิมพ์การติดตามสแต็กให้คุณ (ของเราไม่ทำและไม่เปลี่ยนไม่ได้ง่ายๆ) การพิมพ์การติดตามสแต็กไม่ถือเป็นการจัดการข้อผิดพลาด ควรใช้ร่วมกับการบันทึกข้อมูลอื่น ๆ และการจัดการข้อยกเว้น มีเหตุผลอะไรอีกบ้างที่หลีกเลี่ยงการพิมพ์สแต็กแทร็กในโค้ดของคุณ

2
เหตุใด UnhandledExceptionEventArgs.ExceptionObject จึงเป็นอ็อบเจ็กต์ไม่ใช่ Exception
ทำไมUnhandledExceptionEventArgs.ExceptionObjectวัตถุถึงไม่ใช่Exception? ฉันติดอยู่กับAppDomain.UnhandledException. ผมอยากจะโยนUnhandledExceptionEventArgs.ExceptionObjectไปยังExceptionและ interogate มัน และด้วยเหตุนี้มันจะเป็นโมฆะหรือไม่? MSDN เอกสารไม่เป็นประโยชน์ exatly รับวัตถุข้อยกเว้นที่ไม่สามารถจัดการได้

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