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

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

12
การใช้ IDisposable และ "ใช้" เป็นวิธีการในการรับ "พฤติกรรมที่กำหนดขอบเขต" เพื่อความปลอดภัยในทางที่ผิดหรือไม่
สิ่งที่ฉันมักใช้ใน C ++ คือการปล่อยให้คลาสAจัดการกับการเข้าสู่สถานะและเงื่อนไขการออกสำหรับคลาสอื่นBผ่านตัวAสร้างและตัวทำลายเพื่อให้แน่ใจว่าหากบางสิ่งในขอบเขตนั้นเกิดข้อยกเว้น B จะมีสถานะที่ทราบเมื่อ ออกจากขอบเขตแล้ว นี่ไม่ใช่ RAII ที่บริสุทธิ์เท่าที่ใช้ตัวย่อ แต่เป็นรูปแบบที่กำหนดไว้ ใน C # ฉันมักจะต้องการทำ class FrobbleManager { ... private void FiddleTheFrobble() { this.Frobble.Unlock(); Foo(); // Can throw this.Frobble.Fiddle(); // Can throw Bar(); // Can throw this.Frobble.Lock(); } } ซึ่งต้องทำแบบนี้ private void FiddleTheFrobble() { this.Frobble.Unlock(); try { Foo(); // Can …

5
เหตุใดเราจึงไม่ทิ้งข้อยกเว้นเหล่านี้
ฉันได้ข้ามผ่าน หน้า MSDNที่ระบุว่า: อย่าโยนException , SystemException , NullReferenceExceptionหรือIndexOutOfRangeExceptionโดยเจตนาจากซอร์สโค้ดของคุณเอง น่าเสียดายที่ไม่ต้องอธิบายว่าทำไม ฉันเดาเหตุผลได้ แต่หวังว่าจะมีคนที่มีอำนาจมากกว่าในเรื่องนี้อาจให้ข้อมูลเชิงลึกได้ สองข้อแรกมีความหมายที่ชัดเจน แต่สองข้อหลังดูเหมือนว่าคุณต้องการจ้างงาน (และอันที่จริงฉันมี) นอกจากนี้เป็นข้อยกเว้นเดียวที่ควรหลีกเลี่ยงหรือไม่? หากมีคนอื่นพวกเขาคืออะไรและทำไมจึงควรหลีกเลี่ยงเช่นกัน

5
ดึงข้อมูลย้อนกลับจากออบเจ็กต์ข้อยกเว้น
การระบุอ็อบเจ็กต์ Exception (ไม่ทราบแหล่งกำเนิด) มีวิธีการติดตามย้อนกลับหรือไม่ ฉันมีรหัสดังนี้: def stuff(): try: ..... return useful except Exception as e: return e result = stuff() if isinstance(result, Exception): result.traceback <-- How? ฉันจะดึงการย้อนกลับจากอ็อบเจ็กต์ Exception ได้อย่างไรเมื่อมีแล้ว

3
ทำไม writeObject ถึงโยน java.io.NotSerializableException และฉันจะแก้ไขได้อย่างไร
ฉันมีข้อยกเว้นนี้และฉันไม่เข้าใจว่าทำไมมันถึงถูกโยนทิ้งหรือฉันควรจัดการอย่างไร try { os.writeObject(element); } catch (IOException e) { e.printStackTrace(); } ที่ไหนelementเป็นTransformGroupที่มีอื่น ๆ บางTransformGroupsตัวอย่างของ Atom คลาส: public class Atom extends Group implements Serializable{ float pozX,pozY; Group group= new Group(); Color3f blue = new Color3f(new Color(255)); Color3f black = new Color3f(new Color(0)); Sphere AtSph=new Sphere(); public Atom(final float WEIGHT, final int …

4
จับข้อยกเว้นที่ถูกโยนในเธรดที่แตกต่างกัน
หนึ่งในวิธีของฉัน ( Method1) สร้างเธรดใหม่ เธรดนั้นดำเนินการเมธอด ( Method2) และในระหว่างการดำเนินการจะมีการยกเว้น ฉันต้องการรับข้อมูลข้อยกเว้นนั้นเกี่ยวกับวิธีการโทร ( Method1) มีบางครั้งที่ฉันสามารถจับข้อยกเว้นMethod1นี้ได้Method2หรือไม่?


6
ฉันต้องการจัดการข้อยกเว้น 'ดัชนีรายการอยู่นอกช่วง'
ฉันใช้BeautifulSoupและแยกวิเคราะห์ HTML บางส่วน ฉันได้รับข้อมูลบางอย่างจากแต่ละ HTML (ใช้สำหรับลูป)และเพิ่มข้อมูลนั้นลงในรายการบางรายการ ปัญหาคือบางส่วนของ HTMLs มีรูปแบบที่แตกต่างกัน(และพวกเขาไม่ได้มีข้อมูลที่ฉันต้องการในพวกเขา) ดังนั้นฉันจึงพยายามใช้การจัดการข้อยกเว้นและเพิ่มมูลค่าnullให้กับรายการ(ฉันควรทำเช่นนี้เนื่องจากลำดับของข้อมูลมีความสำคัญ) ตัวอย่างเช่นฉันมีรหัสเช่น: soup = BeautifulSoup(links) dlist = soup.findAll('dd', 'title') # I'm trying to find content between <dd class='title'> and </dd> gotdata = dlist[1] # and what i want is the 2nd content of those newlist.append(gotdata) # and I add that to …

4
Application.ThreadException และ AppDomain.CurrentDomain.UnhandledException แตกต่างกันอย่างไร
เอาล่ะนี่เป็นเรื่องง่าย: อะไรคือความแตกต่างระหว่างApplication.ThreadExceptionและAppDomain.CurrentDomain.UnhandledException? ฉันจำเป็นต้องจัดการทั้งสองอย่างหรือไม่? ขอบคุณ!

1
ตอนนี้ Haskell โลกแห่งความจริงส่วนใดล้าสมัยหรือถือว่าเป็นการปฏิบัติที่ไม่ดี
ในบทที่ 19 ของReal World Haskellหลายตัวอย่างตอนนี้ล้มเหลวเนื่องจากการเปลี่ยนแปลงของControl.Exception. นั่นทำให้ฉันคิดว่าบางสิ่งในหนังสือเล่มนี้อาจล้าสมัยไปแล้วและไม่คุ้มที่จะศึกษาอีกต่อไปหลังจากนั้นก็เป็นเวลา 6 ปี ข้อมูลอ้างอิงอื่น ๆ ของฉันคือLearn You a Haskell For Great Goodแม้ว่าจะเป็นหนังสือที่ยอดเยี่ยม แต่ก็มีพื้นฐานมากกว่าเมื่อเทียบกับ RWH ใครที่เคยอ่านหนังสือมาก่อนช่วยแนะนำหน่อยได้ไหมว่าส่วนไหนที่ไม่เกี่ยวข้องอีกต่อไป โดยเฉพาะอย่างยิ่งบทในช่วงครึ่งหลังของหนังสือตัวอย่างเช่นหน่วยความจำธุรกรรมซอฟต์แวร์การเขียนโปรแกรมพร้อมกันการเขียนโปรแกรมซ็อกเก็ตเป็นต้น แก้ไข: เป็นเรื่องเกี่ยวกับฉบับของหนังสือที่ตีพิมพ์ในเดือนธันวาคม 2551 ซึ่งเป็นฉบับเดียวที่รู้จัก ณ วันนี้ (พ.ย. 2017)

14
การจับ Throwable เป็นการปฏิบัติที่ไม่ดีหรือไม่?
ฝึกจับผิดThrowableหรือเปล่า ตัวอย่างเช่นสิ่งนี้: try { // Some code } catch(Throwable e) { // handle the exception } นี่เป็นการปฏิบัติที่ไม่ดีหรือเราควรเจาะจงให้มากที่สุด?


5
ใน Python เราจะจับคำเตือนได้อย่างไรว่าเป็นข้อยกเว้น
ไลบรารีของบุคคลที่สาม (เขียนด้วย C) ที่ฉันใช้ในโค้ด python ของฉันกำลังออกคำเตือน ฉันต้องการใช้try exceptไวยากรณ์เพื่อจัดการกับคำเตือนเหล่านี้อย่างถูกต้อง มีวิธีทำไหม?



8
เหตุใด“ ข้อยกเว้นการโยน” จึงจำเป็นเมื่อเรียกใช้ฟังก์ชัน
class throwseg1 { void show() throws Exception { throw new Exception("my.own.Exception"); } void show2() throws Exception // Why throws is necessary here ? { show(); } void show3() throws Exception // Why throws is necessary here ? { show2(); } public static void main(String s[]) throws Exception // Why throws …

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