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

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

25
ฉันจะสร้างไดเรกทอรีที่ซ้อนกันได้อย่างปลอดภัยได้อย่างไร
เป็นวิธีที่หรูหราที่สุดในการตรวจสอบว่าไดเรกทอรีไฟล์จะถูกเขียนไปยังอยู่และถ้าไม่สร้างไดเรกทอรีโดยใช้ Python? นี่คือสิ่งที่ฉันพยายาม: import os file_path = "/my/directory/filename.txt" directory = os.path.dirname(file_path) try: os.stat(directory) except: os.mkdir(directory) f = file(filename) ยังไงก็เถอะฉันคิดถึงos.path.exists(ขอบคุณ Kanja, Blair และ Douglas) นี่คือสิ่งที่ฉันมีตอนนี้: def ensure_dir(file_path): directory = os.path.dirname(file_path) if not os.path.exists(directory): os.makedirs(directory) มีการตั้งค่าสถานะสำหรับ "เปิด" ที่ทำให้เกิดขึ้นโดยอัตโนมัติหรือไม่

5
จับหลายข้อยกเว้นในหนึ่งบรรทัด (ยกเว้นบล็อก)
ฉันรู้ว่าฉันสามารถทำได้: try: # do something that may fail except: # do this if ANYTHING goes wrong ฉันยังสามารถทำสิ่งนี้: try: # do something that may fail except IDontLikeYouException: # say please except YouAreTooShortException: # stand on a ladder แต่ถ้าฉันต้องการทำสิ่งเดียวกันภายในข้อยกเว้นที่แตกต่างกันสองข้อที่ดีที่สุดที่ฉันสามารถนึกได้ในตอนนี้คือการทำสิ่งนี้: try: # do something that may fail except IDontLikeYouException: # say please except …


28
จับข้อยกเว้นหลายรายการพร้อมกันหรือไม่
System.Exceptionมันเป็นกำลังใจที่จะเพียงแค่จับ ควรจับเฉพาะข้อยกเว้น "รู้จัก" เท่านั้น ตอนนี้บางครั้งสิ่งนี้นำไปสู่รหัสซ้ำซ้อนที่ไม่จำเป็นเช่น: try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; } ฉันสงสัยว่า: มีวิธีจับทั้งข้อยกเว้นและโทรWebId = Guid.Emptyออกครั้งเดียวเท่านั้นหรือไม่ GUIDตัวอย่างที่ได้รับค่อนข้างง่ายในขณะที่มันเป็นเพียง แต่คิดรหัสที่คุณปรับเปลี่ยนวัตถุหลายครั้งและถ้าหนึ่งในกิจวัตรล้มเหลวในทางที่คาดว่าคุณต้องการที่จะ object"รีเซ็ตที่" อย่างไรก็ตามหากมีข้อยกเว้นที่ไม่คาดคิดฉันยังคงต้องการที่จะโยนที่สูงขึ้น

30
คุณยืนยันว่ามีข้อยกเว้นบางอย่างเกิดขึ้นในการทดสอบ JUnit 4 ได้อย่างไร
ฉันจะใช้ JUnit4 โดยใช้สำนวนเพื่อทดสอบว่าบางรหัสผิดพลาดได้อย่างไร ในขณะที่ฉันสามารถทำอะไรเช่นนี้: @Test public void testFooThrowsIndexOutOfBoundsException() { boolean thrown = false; try { foo.doStuff(); } catch (IndexOutOfBoundsException e) { thrown = true; } assertTrue(thrown); } ฉันจำได้ว่ามีคำอธิบายประกอบหรือ Assert.xyz หรือบางสิ่งที่มีความบกพร่องน้อยกว่าและมีจิตวิญญาณของ JUnit มากขึ้นสำหรับสถานการณ์ประเภทนี้
1999 java  exception  junit  junit4  assert 

10
วิธีที่เหมาะสมในการประกาศข้อยกเว้นที่กำหนดเองใน Python สมัยใหม่หรือไม่
วิธีที่เหมาะสมในการประกาศคลาสยกเว้นแบบกำหนดเองใน Python สมัยใหม่คืออะไร เป้าหมายหลักของฉันคือการติดตามคลาสยกเว้นอื่น ๆ ที่เป็นมาตรฐานดังนั้น (เช่น) สตริงพิเศษใด ๆ ที่ฉันรวมไว้ในข้อยกเว้นจะถูกพิมพ์ออกมาโดยเครื่องมือใดก็ตามที่จับข้อยกเว้นได้ โดย "modern Python" ฉันหมายถึงสิ่งที่จะทำงานใน Python 2.5 แต่จะ 'ถูกต้อง' สำหรับ Python 2.6 และ Python 3 * วิธีการทำสิ่งต่างๆ และโดย "กำหนดเอง" ฉันหมายถึงวัตถุยกเว้นที่สามารถรวมข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุของข้อผิดพลาด: สตริงหรืออาจเป็นวัตถุอื่น ๆ ที่เกี่ยวข้องกับข้อยกเว้น ฉันถูกสะดุดโดยคำเตือนเรื่องเลิกใช้งานต่อไปนี้ใน Python 2.6.2: >>> class MyError(Exception): ... def __init__(self, message): ... self.message = message ... >>> MyError("foo") _sandbox.py:3: …

30
การจัดการกับข้อผิดพลาด“ java.lang.OutOfMemoryError: พื้นที่ PermGen”
เมื่อเร็ว ๆ นี้ฉันพบข้อผิดพลาดในเว็บแอปพลิเคชันของฉัน: java.lang.OutOfMemoryError: พื้นที่ PermGen มันเป็นแอปพลิเคชั่น Hibernate / JPA + IceFaces / JSF ที่ทำงานบน Tomcat 6 และ JDK 1.6 เห็นได้ชัดว่าสิ่งนี้อาจเกิดขึ้นได้หลังจากปรับใช้แอปพลิเคชันอีกครั้งสองสามครั้ง อะไรเป็นสาเหตุและสิ่งที่สามารถทำได้เพื่อหลีกเลี่ยง ฉันจะแก้ไขปัญหาได้อย่างไร





21
การทำความเข้าใจกับข้อยกเว้นที่ทำเครื่องหมายกับการตรวจสอบใน Java
Joshua Bloch ใน " Effective Java " กล่าวว่า ใช้ข้อยกเว้นที่ตรวจสอบแล้วสำหรับเงื่อนไขที่สามารถกู้คืนได้และข้อยกเว้นรันไทม์สำหรับข้อผิดพลาดในการเขียนโปรแกรม (รายการ 58 ในรุ่นที่ 2) ลองดูว่าฉันเข้าใจสิ่งนี้ถูกต้องหรือไม่ นี่คือความเข้าใจของฉันเกี่ยวกับข้อยกเว้นที่ตรวจสอบ: try{ String userInput = //read in user input Long id = Long.parseLong(userInput); }catch(NumberFormatException e){ id = 0; //recover the situation by setting the id to 0 } 1. ข้างต้นถือว่าเป็นข้อยกเว้นที่ตรวจสอบหรือไม่ 2. RuntimeException เป็นข้อยกเว้นที่ไม่ได้ตรวจสอบหรือไม่? นี่คือความเข้าใจของฉันเกี่ยวกับข้อยกเว้นที่ไม่ได้ตรวจสอบ: try{ File …

10
ฉันสามารถตรวจจับข้อยกเว้น Java หลายข้อใน catch clause เดียวกันได้หรือไม่
ใน Java ฉันต้องการทำสิ่งนี้: try { ... } catch (/* code to catch IllegalArgumentException, SecurityException, IllegalAccessException, and NoSuchFieldException at the same time */) { someCode(); } ...แทน: try { ... } catch (IllegalArgumentException e) { someCode(); } catch (SecurityException e) { someCode(); } catch (IllegalAccessException e) { someCode(); } catch (NoSuchFieldException …

17
ChuckNorrisException ที่จับไม่ได้
เป็นไปได้ไหมที่จะสร้างส่วนของโค้ดในJavaที่จะทำให้ไม่สามารถจับสมมุติฐานได้java.lang.ChuckNorrisException? ความคิดที่อยู่ในใจคือการใช้ตัวอย่างเช่นตัวดักหรือการเขียนโปรแกรมเชิงกว้าง

26
IllegalArgumentException หรือ NullPointerException สำหรับพารามิเตอร์ null? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันมีวิธีตัวตั้งค่าง่าย ๆ สำหรับคุณสมบัติและnullไม่เหมาะสมกับคุณสมบัตินี้โดยเฉพาะ ฉันมักจะถูกฉีกขาดในสถานการณ์นี้: ฉันควรจะโยนIllegalArgumentExceptionหรือNullPointerException? จาก javadocs ทั้งคู่ดูเหมือนจะเหมาะสม มีมาตรฐานที่เข้าใจบ้างไหม? หรือนี่เป็นเพียงหนึ่งในสิ่งที่คุณควรทำในสิ่งที่คุณต้องการและทั้งสองอย่างนั้นถูกต้องจริงเหรอ?

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