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

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

8
Java / Android - จะพิมพ์การติดตามสแต็กแบบเต็มได้อย่างไร
ใน Android (Java) ฉันจะพิมพ์สแต็กเทรซแบบเต็มได้อย่างไร หากแอปพลิเคชันของฉันขัดข้องจาก nullPointerException หรือบางสิ่งบางอย่างแอปพลิเคชันจะพิมพ์การติดตามสแต็กเต็ม (เกือบ) แบบเต็มดังนี้: java.io.IOException: Attempted read from closed stream. com.android.music.sync.common.SoftSyncException: java.io.IOException: Attempted read from closed stream. at com.android.music.sync.google.MusicSyncAdapter.getChangesFromServerAsDom(MusicSyncAdapter.java:545) at com.android.music.sync.google.MusicSyncAdapter.fetchDataFromServer(MusicSyncAdapter.java:488) at com.android.music.sync.common.AbstractSyncAdapter.download(AbstractSyncAdapter.java:417) at com.android.music.sync.common.AbstractSyncAdapter.innerPerformSync(AbstractSyncAdapter.java:313) at com.android.music.sync.common.AbstractSyncAdapter.onPerformLoggedSync(AbstractSyncAdapter.java:243) at com.google.android.common.LoggingThreadedSyncAdapter.onPerformSync(LoggingThreadedSyncAdapter.java:33) at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:164) Caused by: java.io.IOException: Attempted read from closed stream. at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:148) at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:159) at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:212) …

11
.NET: ข้อยกเว้นใดที่ควรทิ้งเมื่อการตั้งค่าคอนฟิกที่จำเป็นขาดหายไป?
นี่คือสถานการณ์มาตรฐาน: if(string.IsNullOrEmpty(Configuration.AppSettings["foobar"])) throw new SomeStandardException("Application not configured correctly, bozo."); ปัญหาคือฉันไม่แน่ใจว่าข้อยกเว้นSomeStandardExceptionใดควรเป็นอย่างยิ่ง ฉันอ่าน 3.5 Framework และพบผู้สมัครสองคนที่น่าจะเป็น: ConfigurationExceptionและConfigurationErrorsException. System.Configuration.ConfigurationException ข้อยกเว้นที่เกิดขึ้นเมื่อเกิดข้อผิดพลาดของระบบคอนฟิกูเรชัน หมายเหตุConfigurationExceptionยกเว้นจะโยนถ้าความพยายามในการประยุกต์ใช้ในการอ่านหรือเขียนข้อมูลไปยังแฟ้มการกำหนดค่า แต่ไม่ประสบความสำเร็จ สาเหตุที่เป็นไปได้บางประการอาจรวมถึง XML ที่ผิดรูปแบบในไฟล์คอนฟิกูเรชันปัญหาการอนุญาตไฟล์และคุณสมบัติการกำหนดค่าที่มีค่าไม่ถูกต้อง บันทึก: ConfigurationExceptionวัตถุจะยังคงเข้ากันได้ย้อนหลัง ConfigurationErrorsException วัตถุแทนที่ระบบการกำหนดค่า ข้อยกเว้นนี้ฟังดูสมบูรณ์แบบสำหรับสิ่งที่ฉันต้องการ แต่ถูกทำเครื่องหมายว่าล้าสมัยดังนั้น ixnay on atthay สิ่งนี้ทำให้เรางงอย่างละเอียดConfigurationErrorsException: System.Configuration.ConfigurationErrorsException ค่าปัจจุบันไม่ใช่หนึ่งในค่า EnableSessionState อย่างที่คุณเห็นเอกสารประกอบนั้นไร้ประโยชน์อย่างสิ้นเชิง (เป็นแบบนั้นในความช่วยเหลือทั้งในพื้นที่และออนไลน์) การตรวจสอบในชั้นเรียนแสดงให้เห็นว่าฉันต้องการสิ่งที่ฉันต้องการมากเกินไป โดยสรุปฉันต้องการข้อยกเว้นมาตรฐานที่ควรทิ้งเมื่อการตั้งค่าการกำหนดค่าแอปพลิเคชันขาดหายไปหรือมีค่าที่ไม่ถูกต้อง คุณคิดว่า Framework มีข้อยกเว้นดังกล่าวสำหรับแอปพลิเคชันที่จะใช้ (เห็นได้ชัดว่าเป็นเช่นนั้น แต่ถูกทำเครื่องหมายว่าล้าสมัยและถูกแทนที่ด้วยขอบเขตที่ใหญ่กว่ามาก ) พวกคุณใช้วิธีแก้ปัญหาอะไรหรือไม่และฉันจะต้องดูดมันขึ้นมาและยกเลิกข้อยกเว้นของตัวเองสำหรับสิ่งนี้หรือไม่? แก้ไขภาคผนวก มีบางคนถามว่าฉันสามารถระบุค่าเริ่มต้นได้หรือไม่และดำเนินการต่อ ในบางกรณีใช่และในบางกรณีข้อยกเว้นจะไม่ถูกโยนทิ้ง อย่างไรก็ตามสำหรับการตั้งค่าบางอย่างจะใช้ไม่ได้ …

14
ฉันควรใช้ตัวระบุข้อยกเว้นใน C ++ หรือไม่
ใน C ++ คุณสามารถระบุว่าฟังก์ชันอาจมีหรือไม่มีข้อยกเว้นโดยใช้ตัวระบุข้อยกเว้น ตัวอย่างเช่น: void foo() throw(); // guaranteed not to throw an exception void bar() throw(int); // may throw an exception of type int void baz() throw(...); // may throw an exception of some unspecified type ฉันสงสัยเกี่ยวกับการใช้งานจริงเนื่องจากสิ่งต่อไปนี้: คอมไพเลอร์ไม่ได้บังคับใช้ตัวระบุข้อยกเว้นอย่างเข้มงวด แต่อย่างใดดังนั้นประโยชน์จึงไม่มาก ตามหลักการแล้วคุณต้องการรับข้อผิดพลาดในการคอมไพล์ หากฟังก์ชันละเมิดตัวระบุข้อยกเว้นฉันคิดว่าพฤติกรรมมาตรฐานคือการยุติโปรแกรม ใน VS.Net ถือว่าการโยน (X) เป็นการโยน (... ) …

14
ออกแบบตามสัญญาโดยใช้คำยืนยันหรือข้อยกเว้น? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เมื่อเขียนโปรแกรมตามสัญญาฟังก์ชั่นหรือวิธีการก่อนอื่นให้ตรวจสอบว่ามีการปฏิบัติตามเงื่อนไขเบื้องต้นหรือไม่ก่อนที่จะเริ่มทำงานในความรับผิดชอบใช่ไหม? ทั้งสองมากที่สุดวิธีการประสบความสำเร็จในการทำตรวจสอบเหล่านี้โดยและassertexception ยืนยันล้มเหลวในโหมดดีบักเท่านั้น เพื่อให้แน่ใจว่าจำเป็นอย่างยิ่งที่จะต้อง (หน่วย) ทดสอบเงื่อนไขเบื้องต้นของสัญญาที่แยกจากกันทั้งหมดเพื่อดูว่าล้มเหลวจริงหรือไม่ ข้อยกเว้นล้มเหลวในโหมดดีบักและรีลีส สิ่งนี้มีประโยชน์ที่พฤติกรรมการดีบักที่ทดสอบจะเหมือนกับพฤติกรรมการรีลีส แต่จะมีโทษประสิทธิภาพของรันไทม์ คุณคิดว่าอันไหนดีกว่ากัน? ดูคำถามที่เกี่ยวข้องที่นี่

6
ฉันจะนำเข้าข้อยกเว้น Django DoesNotExist ได้อย่างไร
ฉันกำลังพยายามสร้าง UnitTest เพื่อตรวจสอบว่าวัตถุถูกลบไปแล้ว from django.utils import unittest def test_z_Kallie_can_delete_discussion_response(self): ...snip... self._driver.get("http://localhost:8000/questions/3/want-a-discussion") self.assertRaises(Answer.DoesNotExist, Answer.objects.get(body__exact = '<p>User can reply to discussion.</p>')) ฉันได้รับข้อผิดพลาดเรื่อย ๆ : DoesNotExist: Answer matching query does not exist.

15
MaxJsonLength ข้อยกเว้นใน ASP.NET MVC ระหว่าง JavaScriptSerializer
ในการดำเนินการควบคุมของฉันฉันกำลังส่งคืนขนาดใหญ่มากJsonResultเพื่อเติมเต็มตาราง ฉันได้รับInvalidOperationExceptionข้อยกเว้นต่อไปนี้: เกิดข้อผิดพลาดระหว่างการทำให้เป็นอนุกรมหรือการดีซีเรียลไลเซชันโดยใช้ JSON JavaScriptSerializer ความยาวของสตริงเกินค่าที่ตั้งไว้ในคุณสมบัติ maxJsonLength การตั้งค่าmaxJsonLengthคุณสมบัติweb.configเป็นค่าที่สูงขึ้นน่าเสียดายที่ไม่ได้แสดงผลใด ๆ <system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="2147483644"/> </webServices> </scripting> </system.web.extensions> ฉันไม่ต้องการที่จะผ่านมันกลับเป็นสตริงที่กล่าวไว้ในนี้คำตอบ SO ในการวิจัยของฉันฉันเจอบล็อกโพสต์นี้ซึ่งแนะนำให้เขียนด้วยตัวเองActionResult(เช่นLargeJsonResult : JsonResult) เพื่อหลีกเลี่ยงพฤติกรรมนี้ นี่เป็นทางออกเดียวหรือไม่? นี่คือบั๊กใน ASP.NET MVC หรือไม่ ฉันพลาดอะไรไปรึเปล่า? ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมากที่สุด

8
จะโยนข้อยกเว้น std :: ด้วยข้อความตัวแปรได้อย่างไร
นี่คือตัวอย่างของสิ่งที่ฉันมักจะทำเมื่อต้องการเพิ่มข้อมูลบางอย่างในข้อยกเว้น: std::stringstream errMsg; errMsg << "Could not load config file '" << configfile << "'"; throw std::exception(errMsg.str().c_str()); มีวิธีที่ดีกว่าในการทำหรือไม่?

5
จะรับชื่อข้อยกเว้นที่ติดใน Python ได้อย่างไร?
ฉันจะได้รับชื่อของข้อยกเว้นที่เพิ่มขึ้นใน Python ได้อย่างไร เช่น, try: foo = bar except Exception as exception: name_of_exception = ??? assert name_of_exception == 'NameError' print "Failed with exception [%s]" % name_of_exception ตัวอย่างเช่นฉันพบข้อยกเว้นหลายรายการ (หรือทั้งหมด) และต้องการพิมพ์ชื่อของข้อยกเว้นในข้อความแสดงข้อผิดพลาด

15
การเชื่อมต่อ Java-MySql: ไม่อนุญาตให้เรียกค้นคีย์สาธารณะ
ฉันพยายามเชื่อมต่อฐานข้อมูล MySql กับ Java โดยใช้ตัวเชื่อมต่อ 8.0.11 ทุกอย่างดูเหมือนจะโอเค แต่ฉันมีข้อยกเว้นนี้: ข้อยกเว้นในเธรด "main" java.sql.SQLNonTransientConnectionException: ไม่อนุญาตให้เรียกค้นคีย์สาธารณะ กองติดตาม: Exception in thread "main" java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:108) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862) at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:444) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226) at com.mysql.cj.jdbc.MysqlDataSource.getConnection(MysqlDataSource.java:438) at com.mysql.cj.jdbc.MysqlDataSource.getConnection(MysqlDataSource.java:146) at com.mysql.cj.jdbc.MysqlDataSource.getConnection(MysqlDataSource.java:119) at ConnectionManager.getConnection(ConnectionManager.java:28) at Main.main(Main.java:8) เครื่องมือจัดการตัวเชื่อมต่อ: public …

11
เมื่อใดควรใช้การยืนยันและเมื่อใดที่ควรใช้ข้อยกเว้น
ส่วนใหญ่ฉันจะใช้ข้อยกเว้นในการตรวจสอบเงื่อนไขในรหัสของฉันฉันสงสัยว่าเวลาที่เหมาะสมในการใช้การยืนยันคืออะไร? ตัวอย่างเช่น Group group=null; try{ group = service().getGroup("abc"); }catch(Exception e){ //I dont log error because I know whenever error occur mean group not found } if(group !=null) { //do something } คุณช่วยระบุได้ไหมว่าการยืนยันเข้ากับที่นี่ได้อย่างไร? ฉันควรใช้คำยืนยันหรือไม่? ดูเหมือนว่าฉันไม่เคยใช้การยืนยันในรหัสการผลิตและดูเฉพาะการยืนยันในการทดสอบหน่วยเท่านั้น ฉันรู้ว่าในกรณีส่วนใหญ่ฉันสามารถใช้ข้อยกเว้นในการตรวจสอบเหมือนข้างต้นได้ แต่ฉันต้องการทราบวิธีที่เหมาะสมในการดำเนินการ "อย่างมืออาชีพ"

6
วิธีจัดการข้อยกเว้นในการทำความเข้าใจรายการ?
ฉันมีความเข้าใจรายการใน Python ซึ่งการวนซ้ำแต่ละครั้งอาจทำให้เกิดข้อยกเว้นได้ ตัวอย่างเช่นถ้าฉันมี: eggs = (1,3,0,3,2) [1/egg for egg in eggs] ฉันจะได้รับZeroDivisionErrorข้อยกเว้นในองค์ประกอบที่ 3 ฉันจะจัดการกับข้อยกเว้นนี้และดำเนินการทำความเข้าใจรายการต่อไปได้อย่างไร วิธีเดียวที่ฉันคิดได้คือใช้ฟังก์ชันตัวช่วย: def spam(egg): try: return 1/egg except ZeroDivisionError: # handle division by zero error # leave empty for now pass แต่มันดูยุ่งยากสำหรับฉัน มีวิธีที่ดีกว่านี้ใน Python หรือไม่? หมายเหตุ: นี่เป็นตัวอย่างง่ายๆ (ดู " ตัวอย่าง " ด้านบน) ที่ฉันจัดทำขึ้นเนื่องจากตัวอย่างจริงของฉันต้องการบริบทบางอย่าง ฉันไม่สนใจที่จะหลีกเลี่ยงการหารด้วยข้อผิดพลาดเป็นศูนย์ แต่ในการจัดการข้อยกเว้นในการทำความเข้าใจรายการ

19
ที่เก็บตาราง Azure ส่งคืน 400 คำขอที่ไม่ถูกต้อง
ฉันรันสิ่งนี้ในโหมดดีบักและแนบรูปภาพพร้อมรายละเอียดของข้อยกเว้น ฉันจะรู้ได้อย่างไรว่าเกิดอะไรขึ้น? ฉันพยายามใส่ข้อมูลในตาราง สีฟ้าไม่สามารถให้รายละเอียดเพิ่มเติมได้หรือไม่? ข้อสังเกต: ที่เก็บข้อมูลอยู่บน Windows Azure ไม่ได้อยู่ในเครื่องของฉัน สร้างตารางแล้ว แต่ฉันได้รับข้อผิดพลาดนี้เมื่อแทรกข้อมูล // Retrieve the storage account from the connection string. Microsoft.WindowsAzure.Storage.CloudStorageAccount storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=***;AccountKey=***"); // Create the table client. CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); // Create the table if it doesn't exist. CloudTable table = tableClient.GetTableReference("EmployeeOnlineHistory"); table.CreateIfNotExists(); และนี่คือรหัสแทรก: public static void …

4
คำถามข้อยกเว้น C ++ เกี่ยวกับการเปลี่ยนข้อยกเว้นเดิม
ต่อไปนี้จะผนวก () ในการจับทำให้เกิดข้อยกเว้นอีกครั้งเพื่อดูผลของการผนวก () ที่ถูกเรียกหรือไม่ try { mayThrowMyErr(); } catch (myErr &err) { err.append("Add to my message here"); throw; // Does the rethrow exception reflect the call to append()? } ในทำนองเดียวกันถ้าฉันเขียนใหม่ด้วยวิธีนี้การแบ่งบิตจะเกิดขึ้นหาก myErr มีข้อยกเว้นจริงหรือไม่ try { mayThrowObjectDerivedFromMyErr(); } catch (myErr &err) { err.append("Add to my message's base class here"); throw err; …
118 c++  exception  rethrow 

19
Null check chain เทียบกับการจับ NullPointerException
บริการเว็บส่งคืน XML ขนาดใหญ่และฉันต้องการเข้าถึงช่องที่ซ้อนกันอย่างลึกซึ้ง ตัวอย่างเช่น: return wsObject.getFoo().getBar().getBaz().getInt() ปัญหาคือว่าgetFoo(), getBar(), อาจกลับมาทั้งหมดgetBaz()null อย่างไรก็ตามหากฉันตรวจสอบnullในทุกกรณีรหัสจะดูละเอียดมากและอ่านยาก ยิ่งไปกว่านั้นฉันอาจพลาดการตรวจสอบบางฟิลด์ if (wsObject.getFoo() == null) return -1; if (wsObject.getFoo().getBar() == null) return -1; // maybe also do something with wsObject.getFoo().getBar() if (wsObject.getFoo().getBar().getBaz() == null) return -1; return wsObject.getFoo().getBar().getBaz().getInt(); เป็นที่ยอมรับหรือไม่ที่จะเขียน try { return wsObject.getFoo().getBar().getBaz().getInt(); } catch (NullPointerException ignored) { return -1; …

15
แนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการข้อยกเว้นใน Java หรือ C # [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันกำลังตัดสินใจว่าจะจัดการข้อยกเว้นในแอปพลิเคชันของฉันอย่างไร มากถ้าปัญหาของฉันเกี่ยวกับข้อยกเว้นมาจาก 1) การเข้าถึงข้อมูลผ่านบริการระยะไกลหรือ 2) การยกเลิกการกำหนดค่าออบเจ็กต์ JSON น่าเสียดายที่ฉันไม่สามารถรับประกันความสำเร็จสำหรับงานเหล่านี้ได้ (ตัดการเชื่อมต่อเครือข่ายอ็อบเจ็กต์ JSON ที่ผิดรูปแบบซึ่งไม่สามารถควบคุมได้) ดังนั้นหากฉันพบข้อยกเว้นฉันเพียงแค่จับมันภายในฟังก์ชันและส่งคืน FALSE ไปยังผู้โทร ตรรกะของฉันคือผู้โทรทุกคนสนใจจริงๆคือถ้างานสำเร็จไม่ใช่เพราะเหตุใดจึงไม่สำเร็จ นี่คือตัวอย่างโค้ดบางส่วน (ใน JAVA) ของวิธีการทั่วไป) public boolean doSomething(Object p_somthingToDoOn) { boolean result = false; try{ // if dirty object then clean doactualStuffOnObject(p_jsonObject); //assume success (no exception thrown) …

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