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

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

18
การแก้ไขปัญหา BadImageFormatException
ฉันมีบริการ Windows ที่เขียนใน C # โดยใช้ Visual Studio 2010 และกำหนดเป้าหมายไปที่. NET Framework 4 แบบเต็มเมื่อฉันเรียกใช้จากการดีบักการสร้างบริการจะทำงานตามที่คาดไว้ อย่างไรก็ตามเมื่อฉันเรียกใช้จากรุ่น Release ฉันจะได้รับ System.BadImageFormatException (รายละเอียดด้านล่าง) ฉันค้นหาทางอินเทอร์เน็ตเพื่อหาวิธีแก้ปัญหา แต่จนถึงตอนนี้ทุกสิ่งที่ฉันพบก็ไม่ได้ช่วยฉันหาทางแก้ปัญหา ปัญหานี้เกิดขึ้นทั้งในระบบ Windows 7 64 บิต (dev) และ Windows XP SP3 32 บิต (เป้าหมาย) นี่คือสิ่งที่ฉันได้ลองทำแล้ว: การตั้งค่าการสร้างที่ได้รับการยืนยันเช่นเป้าหมายแพลตฟอร์มจะเหมือนกันทั้งหมด (x86) ใช้ peverify กับอ็อพชัน / verbose เพื่อให้แน่ใจว่าไบนารีแอสเซมบลีถูกต้อง ใช้ fuslogvw เพื่อค้นหาปัญหาในการโหลด ใช้ CheckAsm เพื่อค้นหาไฟล์หรือชุดประกอบที่หายไป การตรวจสอบทั้งหมดนี้ไม่ได้เปลี่ยนแปลงอะไร …
109 c#  .net  exception 

9
รหัสที่ไม่สามารถเข้าถึงได้ แต่สามารถเข้าถึงได้โดยมีข้อยกเว้น
รหัสนี้เป็นส่วนหนึ่งของแอปพลิเคชันที่อ่านและเขียนไปยังฐานข้อมูลที่เชื่อมต่อ ODBC trueมันจะสร้างบันทึกในฐานข้อมูลและการตรวจสอบแล้วถ้าเป็นประวัติการณ์สร้างเรียบร้อยแล้วกลับมา ความเข้าใจของฉันเกี่ยวกับโฟลว์การควบคุมมีดังนี้: command.ExecuteNonQuery()ได้รับการบันทึกไว้เพื่อโยนInvalid​Operation​Exceptionเมื่อ "การเรียกเมธอดไม่ถูกต้องสำหรับสถานะปัจจุบันของวัตถุ" ดังนั้นหากเป็นเช่นนั้นการดำเนินการของtryบล็อกจะหยุดลงfinallyบล็อกจะถูกดำเนินการจากนั้นจะดำเนินการreturn false;ที่ด้านล่าง อย่างไรก็ตาม IDE ของฉันอ้างว่าreturn false;เป็นรหัสที่ไม่สามารถเข้าถึงได้ และดูเหมือนว่าจะเป็นจริงฉันสามารถลบออกและรวบรวมได้โดยไม่มีข้อตำหนิใด ๆ อย่างไรก็ตามสำหรับฉันดูเหมือนว่าจะไม่มีค่าส่งคืนสำหรับเส้นทางรหัสที่มีการโยนข้อยกเว้นดังกล่าว private static bool createRecord(String table, IDictionary<String,String> data, System.Data.IDbConnection conn, OdbcTransaction trans) { [... some other code ...] int returnValue = 0; try { command.CommandText = sb.ToString(); returnValue = command.ExecuteNonQuery(); return returnValue == 1; } finally …

5
การจับ Ctrl-c ในทับทิม
ฉันผ่านโปรแกรมทับทิมที่ใช้งานมายาวนานซึ่งมีเหตุการณ์ต่างๆเกิดขึ้นมากมาย begin #dosomething rescue Exception => e #halt the exception's progress end ตลอดเวลา โดยไม่ต้องติดตามลงทุกข้อยกเว้นเดียวเหล่านี้ในแต่ละอาจจะจัดการ (อย่างน้อยไม่ได้ทันที) CtrlCผมยังคงชอบที่จะสามารถปิดมันลงในช่วงเวลาที่มี และฉันต้องการทำเช่นนั้นด้วยวิธีที่เพิ่มลงในโค้ดเท่านั้น (ดังนั้นฉันจึงไม่ส่งผลกระทบต่อพฤติกรรมที่มีอยู่หรือพลาดข้อยกเว้นที่ถูกจับได้ในระหว่างการดำเนินการ) [ CtrlCคือ SIGINT หรือ SystemExit ซึ่งดูเหมือนจะเทียบเท่ากับSignalException.new("INT")ในระบบการจัดการข้อยกเว้นของ Ruby class SignalException < Exceptionซึ่งเป็นสาเหตุที่ทำให้เกิดปัญหานี้] รหัสที่ฉันต้องการเขียนคือ: begin #dosomething rescue SignalException => e raise e rescue Exception => e #halt the exception's progress end แก้ไข: รหัสนี้ใช้งานได้ตราบเท่าที่คุณได้รับคลาสของข้อยกเว้นที่คุณต้องการดักจับถูกต้อง นั่นคือ …

5
“ ข้อยกเว้นโอกาสแรก” คืออะไร?
ข้อยกเว้นของโอกาสครั้งแรกคืออะไร? โปรแกรม. NET มีที่มาอย่างไรและที่ไหน? แล้วทำไมถึงเรียกด้วยชื่อแปลก ๆ (เรากำลังพูดถึง 'โอกาส' อะไร)

11
ข้อยกเว้นที่ดีที่สุดสำหรับอาร์กิวเมนต์ประเภททั่วไปที่ไม่ถูกต้อง
ฉันกำลังเขียนโค้ดสำหรับUnconstrainedMelodyซึ่งมีวิธีการทั่วไปที่จะทำกับ enums ตอนนี้ฉันมีระดับคงที่กับพวงของวิธีการซึ่งเป็นผู้เดียวที่มีความหมายที่จะใช้กับ "ธง" enums ฉันไม่สามารถเพิ่มสิ่งนี้เป็นข้อ จำกัด ได้ ... ดังนั้นจึงเป็นไปได้ว่าพวกมันจะถูกเรียกด้วย enum ประเภทอื่นด้วย ในกรณีนี้ฉันต้องการยกเว้น แต่ฉันไม่แน่ใจว่าจะโยนอันไหนดี เพื่อให้เป็นรูปธรรมถ้าฉันมีสิ่งนี้: // Returns a value with all bits set by any values public static T GetBitMask<T>() where T : struct, IEnumConstraint { if (!IsFlags<T>()) // This method doesn't throw { throw new ??? } // Normal …
106 c#  generics  exception 


8
ทำไมไม่รอ Task WhenAll โยน AggregateException?
ในรหัสนี้: private async void button1_Click(object sender, EventArgs e) { try { await Task.WhenAll(DoLongThingAsyncEx1(), DoLongThingAsyncEx2()); } catch (Exception ex) { // Expect AggregateException, but got InvalidTimeZoneException } } Task DoLongThingAsyncEx1() { return Task.Run(() => { throw new InvalidTimeZoneException(); }); } Task DoLongThingAsyncEx2() { return Task.Run(() => { throw new InvalidOperation();}); } …

9
ฉันจะเผยแพร่ข้อยกเว้นระหว่างเธรดได้อย่างไร
เรามีฟังก์ชันที่เธรดเดียวเรียกเข้ามา (เราตั้งชื่อนี้ว่าเธรดหลัก) ภายในเนื้อความของฟังก์ชั่นเราวางเธรดผู้ปฏิบัติงานหลายเธรดเพื่อทำงานที่เข้มข้นของ CPU รอให้เธรดทั้งหมดเสร็จสิ้นจากนั้นส่งคืนผลลัพธ์ในเธรดหลัก ผลลัพธ์คือผู้โทรสามารถใช้ฟังก์ชันได้อย่างไร้เดียงสาและภายในจะใช้ประโยชน์จากหลายคอร์ ดีมาก ... ปัญหาที่เรามีคือการจัดการกับข้อยกเว้น เราไม่ต้องการให้มีข้อยกเว้นในเธรดของผู้ปฏิบัติงานทำให้แอปพลิเคชันหยุดทำงาน เราต้องการให้ผู้เรียกใช้ฟังก์ชันจับพวกเขาบนเธรดหลักได้ เราต้องตรวจจับข้อยกเว้นในเธรดของผู้ปฏิบัติงานและเผยแพร่ข้ามไปยังเธรดหลักเพื่อให้พวกเขาคลี่คลายต่อไปจากที่นั่น เราจะทำเช่นนี้ได้อย่างไร? สิ่งที่ดีที่สุดที่ฉันคิดได้คือ: ตรวจสอบข้อยกเว้นที่หลากหลายในเธรดผู้ปฏิบัติงานของเรา (มาตรฐาน :: ข้อยกเว้นและข้อยกเว้นบางส่วนของเราเอง) บันทึกประเภทและข้อความของข้อยกเว้น มีคำสั่งสวิตช์ที่สอดคล้องกันบนเธรดหลักซึ่งเรียกคืนข้อยกเว้นประเภทใดก็ตามที่บันทึกไว้ในเธรดผู้ปฏิบัติงาน สิ่งนี้มีข้อเสียที่ชัดเจนในการรองรับชุดข้อยกเว้นที่ จำกัด เท่านั้นและจะต้องมีการแก้ไขเมื่อใดก็ตามที่มีการเพิ่มประเภทข้อยกเว้นใหม่


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


1
ฉันต้อง "return" หลังจาก "throw" ใน JavaScript หรือไม่
ฉันกำลังโยนErrorวิธีการของฉันที่ฉันต้องการออกก่อนเวลาดังต่อไปนี้: // No route found if(null === nextRoute) { throw new Error('BAD_ROUTE'); } ฉันต้องใส่return;คำสั่งหลังจากฉันthrowหรือไม่? มันใช้ได้สำหรับฉันในตอนนี้ ถ้ามันฟุ่มเฟือยฉันไม่ควรใส่ แต่ฉันไม่แน่ใจว่าเบราว์เซอร์อื่นจะทำอะไรได้

2
คลาสข้อยกเว้นใดบ้างที่อยู่ในไลบรารี C ++ มาตรฐาน
คลาสข้อยกเว้นที่รวมอยู่ในไลบรารี C ++ มาตรฐานคืออะไรและควรใช้ทำอะไร ฉันรู้ว่ามีข้อยกเว้น C ++ 11 ใหม่ ๆ อยู่บ้าง แต่ฉันไม่แน่ใจว่ามันคืออะไรหรืออยู่ที่ไหน
102 c++  exception  c++11  stl 

3
การส่งผ่านคลาสข้อผิดพลาดหลายคลาสไปยังประโยคการช่วยเหลือของ Ruby ในแบบแห้ง
ฉันมีรหัสบางอย่างที่ต้องการช่วยเหลือข้อยกเว้นหลายประเภทในทับทิม: begin a = rand if a > 0.5 raise FooException else raise BarException end rescue FooException, BarException puts "rescued!" end สิ่งที่ฉันต้องการทำคือเก็บรายการประเภทข้อยกเว้นที่ฉันต้องการช่วยเหลือที่ไหนสักแห่งและส่งต่อประเภทเหล่านั้นไปยังส่วนช่วยเหลือ: EXCEPTIONS = [FooException, BarException] แล้ว: rescue EXCEPTIONS นี้เป็นไปได้และมันเป็นไปได้โดยไม่ต้องโทรจริงๆสับ-Y บางอย่างeval? ฉันไม่หวังว่าจะได้เห็นTypeError: class or module required for rescue clauseเมื่อฉันพยายามข้างต้น
102 ruby  exception  rescue 


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