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

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

15
ตรวจสอบข้อยกเว้นของเธรดในตัวเรียกเธรดใน Python
ฉันใหม่กับ Python และการเขียนโปรแกรมแบบมัลติเธรดโดยทั่วไป โดยทั่วไปฉันมีสคริปต์ที่จะคัดลอกไฟล์ไปยังตำแหน่งอื่น ฉันต้องการให้วางในเธรดอื่นเพื่อให้สามารถแสดงผล....เพื่อระบุว่าสคริปต์ยังคงทำงานอยู่ ปัญหาที่ฉันมีอยู่คือหากไฟล์ไม่สามารถคัดลอกได้มันจะทำให้เกิดข้อยกเว้น ไม่เป็นไรหากทำงานในเธรดหลัก อย่างไรก็ตามการมีรหัสต่อไปนี้ใช้ไม่ได้: try: threadClass = TheThread(param1, param2, etc.) threadClass.start() ##### **Exception takes place here** except: print "Caught an exception" ในคลาสเธรดตัวเองฉันพยายามโยนข้อยกเว้นอีกครั้ง แต่ไม่ทำงาน ฉันเคยเห็นผู้คนที่นี่ถามคำถามที่คล้ายกัน แต่พวกเขาทั้งหมดดูเหมือนจะทำสิ่งที่เฉพาะเจาะจงมากกว่าสิ่งที่ฉันพยายามทำ (และฉันไม่ค่อยเข้าใจวิธีแก้ไขที่เสนอ) ฉันเคยเห็นคนพูดถึงการใช้งานของsys.exc_info()แต่ฉันไม่ทราบว่าจะใช้หรือไม่ ความช่วยเหลือทั้งหมดได้รับการชื่นชมอย่างมาก! แก้ไข:รหัสสำหรับชั้นด้ายอยู่ด้านล่าง: class TheThread(threading.Thread): def __init__(self, sourceFolder, destFolder): threading.Thread.__init__(self) self.sourceFolder = sourceFolder self.destFolder = destFolder def run(self): try: shul.copytree(self.sourceFolder, …

4
e.printStackTrace เทียบเท่าในหลาม
ฉันรู้ว่าprint(e)(โดยที่ e เป็นข้อยกเว้น) พิมพ์ข้อยกเว้นที่เกิดขึ้น แต่ฉันพยายามค้นหา python ที่เทียบเท่าของ Java e.printStackTrace()ที่มีร่องรอยข้อยกเว้นตรงกับบรรทัดที่มันเกิดขึ้นและพิมพ์ร่องรอยทั้งหมดของมัน ใครช่วยกรุณาบอกฉันเทียบเท่าe.printStackTrace()ใน Python?

7
Exception.Message vs Exception.ToString ()
Exception.Messageฉันมีรหัสที่มีการเข้าสู่ระบบ Exception.ToString()แต่ผมอ่านบทความที่ระบุว่ามันจะดีกว่ากับการใช้ ด้วยข้อมูลหลังนี้คุณจะเก็บข้อมูลสำคัญเกี่ยวกับข้อผิดพลาดได้มากขึ้น สิ่งนี้เป็นจริงและปลอดภัยหรือไม่ที่จะไปข้างหน้าและแทนที่การบันทึกรหัสทั้งหมดException.Message? ฉันใช้เลย์เอาต์ XML สำหรับlog4netด้วย เป็นไปได้หรือไม่ที่Exception.ToString()อาจมีอักขระ XML ไม่ถูกต้องซึ่งอาจทำให้เกิดปัญหา

15
C ++ แสดงการติดตามสแต็กบนข้อยกเว้น
ฉันต้องการมีวิธีรายงานการติดตามสแต็กกับผู้ใช้หากมีข้อผิดพลาดเกิดขึ้น วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ใช้รหัสพิเศษจำนวนมากหรือไม่ ในการตอบคำถาม: ฉันต้องการให้พกพาได้ถ้าเป็นไปได้ ฉันต้องการข้อมูลที่จะปรากฏขึ้นเพื่อให้ผู้ใช้สามารถคัดลอกกองติดตามและส่งอีเมลถึงฉันหากมีข้อผิดพลาดเกิดขึ้น

25
คุณใช้การจับซ้ำได้อย่างไร
ลองจับมีไว้เพื่อช่วยในการจัดการข้อยกเว้น หมายความว่าจะช่วยให้ระบบของเรามีความแข็งแกร่งยิ่งขึ้น: พยายามกู้คืนจากเหตุการณ์ที่ไม่คาดคิด เราสงสัยว่ามีบางอย่างอาจเกิดขึ้นเมื่อดำเนินการและคำสั่ง (ส่งข้อความ) ดังนั้นจึงถูกปิดล้อมในการลอง หากสิ่งนั้นเกือบเกิดขึ้นโดยไม่คาดคิดเราสามารถทำบางสิ่งได้: เราเขียนสิ่งที่จับได้ ฉันไม่คิดว่าเราถูกเรียกให้เข้าสู่ระบบยกเว้น สิ่งที่ฉันบล็อก catch มีขึ้นเพื่อให้โอกาสเราในการกู้คืนจากข้อผิดพลาด ตอนนี้สมมติว่าเรากู้คืนจากข้อผิดพลาดเพราะเราสามารถแก้ไขสิ่งที่ผิด อาจเป็นเรื่องดีสุด ๆ ที่จะลองทำใหม่: try{ some_instruction(); } catch (NearlyUnexpectedException e){ fix_the_problem(); retry; } สิ่งนี้จะตกอยู่ในวงนิรันดร์อย่างรวดเร็ว แต่สมมุติว่า fix_the_problem คืนค่าเป็นจริงจากนั้นเราลองอีกครั้ง เนื่องจากไม่มีสิ่งเช่นนี้ใน Java คุณจะแก้ไขปัญหานี้อย่างไร สิ่งที่จะเป็นรหัสการออกแบบที่ดีที่สุดของคุณสำหรับการแก้ปัญหานี้? นี่เป็นคำถามเชิงปรัชญาเนื่องจากฉันรู้แล้วว่าสิ่งที่ฉันขอไม่ได้รับการสนับสนุนโดยตรงจาก Java

15
วิธีใช้ลอง catch สำหรับการจัดการข้อยกเว้นเป็นวิธีปฏิบัติที่ดีที่สุด
ในขณะที่รักษารหัสของเพื่อนร่วมงานจากแม้กระทั่งคนที่อ้างว่าเป็นนักพัฒนาอาวุโสฉันมักจะเห็นรหัสต่อไปนี้: try { //do something } catch { //Do nothing } หรือบางครั้งพวกเขาเขียนข้อมูลการบันทึกลงในไฟล์บันทึกเช่นtry catchบล็อกต่อไปนี้ try { //do some work } catch(Exception exception) { WriteException2LogFile(exception); } ฉันแค่สงสัยว่าสิ่งที่พวกเขาทำเป็นแนวปฏิบัติที่ดีที่สุดหรือไม่? มันทำให้ฉันสับสนเพราะในความคิดของฉันผู้ใช้ควรรู้ว่าเกิดอะไรขึ้นกับระบบ โปรดให้คำแนะนำกับฉัน



9
ทำไมรหัสการเพิ่มลิสต์แบบวนซ้ำนี้จึงทำให้ดัชนีการกำหนดรายการอยู่นอกช่วง?
โปรดพิจารณารหัสต่อไปนี้: i = [1, 2, 3, 5, 8, 13] j = [] k = 0 for l in i: j[k] = l k += 1 print j ผลลัพธ์ (Python 2.6.6 บน Win 7 32- บิต) คือ: > Traceback (most recent call last): > j[k] = l IndexError: list assignment index …
194 python  list  exception 

24
ทำไมไม่ใช้ข้อยกเว้นเป็นโฟลว์ควบคุมปกติ
เพื่อหลีกเลี่ยงคำตอบมาตรฐานทั้งหมดที่ฉันสามารถใช้กับ Google ฉันจะให้ตัวอย่างที่คุณทุกคนสามารถโจมตีได้ C # และ Java (และอื่น ๆ อีกมากมายเกินไป) มีกับความอุดมสมบูรณ์ของประเภทบางส่วนของ 'ล้น' พฤติกรรมฉันไม่ชอบที่ทุกคน (เช่นtype.MaxValue + type.SmallestValue == type.MinValueตัวอย่างเช่น: int.MaxValue + 1 == int.MinValue) แต่เมื่อเห็นลักษณะที่ชั่วร้ายของฉันฉันจะเพิ่มการดูถูกการบาดเจ็บนี้โดยการขยายพฤติกรรมนี้ไปให้สมมุติDateTimeประเภทOverridden (ฉันรู้ว่าDateTimeถูกผนึกใน. NET แต่เพื่อประโยชน์ของตัวอย่างนี้ฉันใช้ภาษาเทียมที่เหมือนกับ C # ยกเว้นความจริงที่ว่า DateTime ไม่ได้ถูกปิดผนึก) Addวิธีการแทนที่: /// <summary> /// Increments this date with a timespan, but loops when /// the maximum value for …

25
สาเหตุของการได้รับ java.lang.VerifyError
ฉันกำลังตรวจสอบสิ่งต่อไปนี้ java.lang.VerifyError java.lang.VerifyError: (class: be/post/ehr/wfm/application/serviceorganization/report/DisplayReportServlet, method: getMonthData signature: (IILjava/util/Collection;Ljava/util/Collection;Ljava/util/HashMap;Ljava/util/Collection;Ljava/util/Locale;Lorg/apache/struts/util/MessageRe˜̴MtÌ´MÚw€mçw€mp:”MŒŒ at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357) at java.lang.Class.getConstructor0(Class.java:2671) มันเกิดขึ้นเมื่อเซิร์ฟเวอร์ jboss ที่เริ่มต้นการปรับใช้เซิร์ฟเล็ต มันถูกคอมไพล์ด้วย jdk-1.5.0_11 และฉันพยายามคอมไพล์ใหม่ด้วย jdk-1.5.0_15 โดยไม่ต้องประสบความสำเร็จ นั่นคือการรวบรวมที่ทำงานได้ดี แต่เมื่อมีการปรับใช้ java.lang.VerifyError จะเกิดขึ้น เมื่อฉันเปลี่ยนชื่อเมธอดและได้รับข้อผิดพลาดต่อไปนี้: java.lang.VerifyError: (class: be/post/ehr/wfm/application/serviceorganization/report/DisplayReportServlet, method: getMD signature: (IILjava/util/Collection;Lj ava/util/Collection;Ljava/util/HashMap;Ljava/util/Collection;Ljava/util/Locale;Lorg/apache/struts/util/MessageResources┬á├ÿ├àN|├ÿ├àN├Üw┬Çm├ºw┬ÇmX#├ûM|X├öM at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357 at java.lang.Class.getConstructor0(Class.java:2671) at java.lang.Class.newInstance0(Class.java:321) at java.lang.Class.newInstance(Class.java:303) คุณสามารถเห็นได้ว่ามีการแสดงลายเซ็นของวิธีการมากขึ้น ลายเซ็นวิธีการที่แท้จริงคือ …

25
Android, ListView IllegalStateException:“ เนื้อหาของอะแดปเตอร์มีการเปลี่ยนแปลง แต่ ListView ไม่ได้รับการแจ้งเตือน”
สิ่งที่ฉันต้องการทำ : เรียกใช้เธรดพื้นหลังซึ่งคำนวณเนื้อหา ListView และอัปเดต ListView บางส่วนในขณะที่คำนวณผลลัพธ์ สิ่งที่ฉันรู้ว่าฉันต้องหลีกเลี่ยง : ฉันไม่สามารถยุ่งกับเนื้อหา ListAdapter จากเธรดพื้นหลังดังนั้นฉันจึงสืบทอด AsyncTask และเผยแพร่ผลลัพธ์ (เพิ่มรายการไปยังอะแดปเตอร์) จาก onProgressUpdate อะแดปเตอร์ของฉันใช้ ArrayList ของวัตถุผลลัพธ์การดำเนินการทั้งหมดในรายการอาร์เรย์เหล่านั้นจะถูกซิงโครไนซ์ งานวิจัยของคนอื่น ๆ : มีข้อมูลที่มีคุณค่ามากที่นี่ ฉันยังได้รับความเดือดร้อนจากการล่มเกือบทุกวันสำหรับกลุ่มผู้ใช้ประมาณ 500 คนและเมื่อฉันเพิ่มlist.setVisibility(GONE)/trackList.setVisibility(VISIBLE)block ใน onProgressUpdate การล่มก็ลดลงด้วยปัจจัย 10 แต่ไม่หายไป (แนะนำในคำตอบ ) สิ่งที่ฉันได้รับ : โปรดสังเกตว่ามันไม่ค่อยเกิดขึ้นจริง ๆ (สัปดาห์ละครั้งสำหรับผู้ใช้หนึ่งใน 3.5k) แต่ฉันต้องการกำจัดข้อผิดพลาดนี้อย่างสมบูรณ์ นี่คือ stacktrace บางส่วน: `java.lang.IllegalStateException:` The content of the adapter …

3
แจ้งเตือนใน Python โดยไม่รบกวนโปรแกรม
ฉันพยายามเพิ่มคำเตือนใน Python โดยไม่ทำให้โปรแกรมขัดข้อง / หยุด / ขัดจังหวะ ฉันใช้ฟังก์ชันง่าย ๆ ต่อไปนี้เพื่อตรวจสอบว่าผู้ใช้ผ่านหมายเลขที่ไม่ใช่ศูนย์หรือไม่ ถ้าเป็นเช่นนั้นโปรแกรมควรเตือนพวกเขา แต่ดำเนินการต่อตามปกติ มันควรจะทำงานเช่นโค้ดด้านล่าง แต่ควรใช้คลาสWarning(), Error()หรือException()แทนการพิมพ์คำเตือนด้วยตนเอง def is_zero(i): if i != 0: print "OK" else: print "WARNING: the input is 0!" return i ถ้าฉันใช้รหัสด้านล่างและส่งผ่าน 0 ไปยังฟังก์ชันโปรแกรมขัดข้องและไม่มีการคืนค่า แต่ฉันต้องการให้โปรแกรมทำงานต่อตามปกติและเพียงแจ้งผู้ใช้ว่าเขาผ่าน 0 ไปยังฟังก์ชัน def is_zero(i): if i != 0: print "OK" else: raise Warning("the input …

4
ArrayIndexOutOfBoundsException พร้อมตัวปรับต่อ Android แบบกำหนดเองสำหรับหลายมุมมองใน ListView
ฉันกำลังพยายามสร้างอแด็ปเตอร์ที่กำหนดเองสำหรับ ListView ของฉันเนื่องจากแต่ละรายการในรายการสามารถมีมุมมองที่แตกต่างกัน (ลิงค์สลับหรือกลุ่มวิทยุ) แต่เมื่อฉันพยายามเรียกใช้กิจกรรมที่ใช้ ListView ฉันได้รับข้อผิดพลาดและ แอพหยุด แอปพลิเคชั่นนี้มีเป้าหมายสำหรับแพลตฟอร์ม Android 1.6 รหัส: public class MenuListAdapter extends BaseAdapter { private static final String LOG_KEY = MenuListAdapter.class.getSimpleName(); protected List<MenuItem> list; protected Context ctx; protected LayoutInflater inflater; public MenuListAdapter(Context context, List<MenuItem> objects) { this.list = objects; this.ctx = context; this.inflater = (LayoutInflater)this.ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } …

5
วิธีจัดการ AccessViolationException
ฉันกำลังใช้วัตถุ COM (MODI) จากภายในแอปพลิเคชัน. net ของฉัน วิธีการที่ฉันเรียกใช้จะเป็นการ System.AccessViolationException ซึ่งถูกสกัดกั้นโดย Visual Studio สิ่งที่แปลกก็คือฉันมีการโทรของฉันในลอง catch ซึ่งมีตัวจัดการสำหรับ AccessViolationException, COMException และทุกอย่างอื่น แต่เมื่อ Visual Studio (2010) ดัก AccessViolationException ดีบักเกอร์จะแบ่งการเรียกเมธอด (doc.OCR) และถ้าฉันผ่านมันไปยังบรรทัดถัดไปแทนที่จะเข้าสู่ catch catch นอกจากนี้หากฉันเรียกใช้สิ่งนี้นอกสตูดิโอภาพแอปพลิเคชันของฉันขัดข้อง ฉันจะจัดการข้อยกเว้นนี้ที่ถูกส่งออกไปภายในวัตถุ COM ได้อย่างไร MODI.Document doc = new MODI.Document(); try { doc.Create(sFileName); try { doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false); sText = doc.Images[0].Layout.Text; } catch …
185 c#  .net  exception  com  modi 

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