Visual Studio 2015 แบ่งข้อยกเว้นที่ไม่สามารถจัดการได้ไม่ทำงาน


114

Visual Studio เคยมีช่องทำเครื่องหมายเฉพาะสำหรับ "Break on Un-handled except" ในปี 2558 สิ่งนี้ถูกลบ (หรือย้ายไปที่ไหนสักแห่งที่ฉันหาไม่เจอ) ดังนั้นตอนนี้โครงการที่แปลงแล้วของฉันจะไม่พังอีกต่อไปหากฉันไม่สามารถจัดหาตัวจัดการข้อยกเว้นระดับผู้ใช้ ฉันไม่ต้องการทำลาย "ข้อยกเว้น" ทั้งหมดเพราะฉันจัดการเฉพาะ ในกรณีที่ฉันไม่สามารถจัดหาเครื่องจัดการเฉพาะได้

ตอนนี้รหัสของฉันเพิ่งออกจากขั้นตอนปัจจุบันและดำเนินการต่อในตำแหน่งสแต็กการโทรถัดไปไม่ดี

ใครรู้วิธีเอาคืนใน Visual Studio 2015 บ้าง? ฉันเพิ่งอัปเกรดเป็นฉบับชุมชนเมื่อวานนี้


Visual Studio 2015 จะเก็บเค้าโครงปัจจุบันจากเวอร์ชันก่อนหน้าของคุณหากแท็บToolหรือWindowแท็บจะไม่มีตำแหน่งที่ต้องการทั้งหมด ในกรณีของคุณคุณกำลังมองหาการตั้งค่าข้อยกเว้น
Greg

4
@greg ไม่ใช่ว่าไม่รู้จะหาแผงไหน ความกังวลของฉันคือพฤติกรรมที่ฉันกำลังมองหาไม่ได้อยู่ในแผงควบคุมนั้น
Ted Lowery

ปัญหาเดียวกันที่นี่ ในกรณีของเราเราคาดว่าจะมีการแบ่งข้อยกเว้นเมื่อ autofac ไม่ได้ลงทะเบียนทุกประเภท การใช้โซลูชันเดียวกันกับ vs2013 มันได้ผลใน vs2015 เราไม่ได้อะไรเลย นี่เป็นปัญหากับการลงทะเบียนและข้อยกเว้นของบุคคลที่สามอื่น ๆ (เช่น nservicebus) ฉันสงสัยว่าเป็นเพียงกรณีสำหรับโครงการที่สร้างขึ้นใน vs2013 และทำงานใน vs2015 หรือไม่
Choco Smith

3
หน้าต่างเครื่องมือใหม่นั้นแย่มาก
cedd

ตามการจำแนกประเภทข้อยกเว้นของ MSหากคุณมีข้อยกเว้นที่ไม่สามารถจัดการได้จะทำให้ดีบักเกอร์แตกเสมอ คุณอาจต้องตรวจสอบตัวเลือก "Break when excptions cross AppDomain ... " ในรายการ "Options -> Debugging -> General"
ซึล

คำตอบ:


118

มีหน้าต่างใหม่ที่เรียกว่า "Exception Settings" ที่ปรากฏในบานหน้าต่างด้านขวาล่างตามค่าเริ่มต้นเมื่อคุณเริ่มการดีบัก มีตัวเลือกทั้งหมดที่คุณคาดหวัง

คุณสามารถนำมันขึ้นมาด้วยCTRL+ ALT+E

สิ่งนี้ช่วยให้คุณสามารถเลือกเชอร์รี่ได้ว่าข้อยกเว้นใดที่ทำให้ตัวดีบักเกอร์หยุดทำงาน

แม้ว่ากุญแจสำคัญคือคุณสามารถตั้งค่าได้ว่าข้อยกเว้นเหล่านี้จะแตกเสมอหรือแตกเฉพาะเมื่อเป็นข้อยกเว้นที่ไม่สามารถจัดการได้ - แต่การตั้งค่านี้ไม่ง่ายนัก

ก่อนอื่นคุณจะต้องเลือก "เปิดใช้งานเพียงรหัสของฉัน" ในเครื่องมือ> ตัวเลือก> การแก้ไขจุดบกพร่อง

จากนั้นให้คุณคลิกขวาที่ส่วนหัวคอลัมน์ (Break When Thrown) ในหน้าต่างการตั้งค่าข้อยกเว้นใหม่และเพิ่มคอลัมน์ "การดำเนินการเพิ่มเติม" ซึ่งจะช่วยให้คุณสามารถตั้งค่าข้อยกเว้นแต่ละรายการเป็น "ดำเนินการต่อเมื่อไม่มีการจัดการในรหัสผู้ใช้"

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

ใส่คำอธิบายภาพที่นี่

เพิ่มเติมเกี่ยวกับเรื่องนี้ที่นี่:

http://blogs.msdn.com/b/visualstudioalm/archive/2015/02/23/the-new-exception-settings-window-in-visual-studio-2015.aspx


7
จริงๆแล้วหน้าต่างนั้นมีตัวเลือกสำหรับ "แบ่งกับโยน" เท่านั้น นั่นไม่ใช่สิ่งที่ฉันต้องการ ฉันต้องการ "หยุดพักเมื่อไม่มีการจัดการ"
Ted Lowery

17
และนั่นคือปัญหา มันไม่แตก ดังที่ฉันได้กล่าวไว้ข้างต้นมันจะออก (ขั้นตอน) ของการเรียกโพรซีเดอร์ปัจจุบันและเพิ่งเริ่มเรียกใช้โค้ดบรรทัดถัดไปในขั้นตอนการโทร
Ted Lowery

2
และฉันเปิดใช้งาน "Just My Code"
Ted Lowery

19
@ TomStudee ฉันก็มีปัญหาเหมือนกัน สิ่งที่ฉันต้องการคือ "หยุดพักเมื่อไม่มีการจัดการ" แต่สิ่งที่ฉันได้รับคือ "หยุดพักเมื่อโยน" คำถามคือจะ "หยุดพักเมื่อไม่มีการจัดการ" ได้อย่างไร?
ogggre

1
@TomStudee ฉันเพิ่งเพิ่มคำชี้แจงที่จำเป็นมากเนื่องจากคุณไม่มีการตั้งค่าคีย์ที่อนุญาตให้คุณตั้งค่าข้อยกเว้นให้แตกเฉพาะเมื่อไม่สามารถจัดการได้
เจอราดโรส

36

ฉันมีปัญหาเดียวกันและฉันสามารถแก้ไขได้โดยทำสิ่งนี้ -

  1. กดCtrl+ Alt+ eเพื่อเปิดหน้าต่างException Settings
  2. ติ๊กรันไทม์ภาษาทั่วไปข้อยกเว้น ใส่คำอธิบายภาพที่นี่

แค่นั้นแหละ!

ผมได้แรงบันดาลใจนี้โพสต์ตั้งแต่ผมใช้x64 รุ่นของระบบปฏิบัติการวินโดวส์


7
ซึ่งจะทำให้ข้อยกเว้นทั้งหมดถูกจัดการด้วยรหัสผู้ใช้
carlin.scott

1
@ carlin.scott ฉันเชื่อว่าคุณสามารถยกเลิกการเลือกข้อยกเว้นที่จัดการจากรายการได้ด้วยตนเอง
Justin XL

6
@JustinXL ปัญหาคือนี่คือรายการตามประเภทข้อยกเว้นไม่ใช่โดยการจัดการหรือไม่ ตัวอย่างเช่นมีบางครั้งที่System.ArgumentExceptionมีการจัดการและบางครั้งที่ไม่ได้รับการจัดการ ฉันสนใจแค่การแตกหักเมื่อไม่ได้รับการจัดการ
เจอราดโรส

1
@JeradRose ดีบักเกอร์จะหยุดทำงานเสมอเมื่อไม่มีการจัดการข้อยกเว้น ดังนั้นชอบพูดว่าถ้าคุณต้องการหยุดพักไม่มีข้อยกเว้นการจัดการเพียงยกเลิกการเลือกว่าประเภทยกเว้นจากการทะลุเมื่อโยนรายการ
Justin XL

แม้ว่าจะตรวจสอบทุกอย่างก็ไม่ผิดยกเว้น: / เพิ่งออก
Douglas Gaskell

10

สำหรับ googler ที่ต้องการหยุดทำงานเมื่อข้อยกเว้นเกี่ยวข้องกับโค้ดเท่านั้นมีตัวเลือกใน Visual Studio 2015: Options-> Debugging-> General-> Just My Code เมื่อตรวจสอบแล้วจะอนุญาตให้ไม่ทำลายเมื่อมีการจัดการข้อยกเว้น (โยนและจับ) นอกรหัสของคุณ


สิ่งนี้ช่วยฉันในสถานการณ์อื่นที่ VS2015 ด้วยเหตุผลบางอย่างปฏิเสธที่จะป้อนรหัสบางอย่าง รหัสนี้เป็น "ของฉัน" แต่มีบางอย่างทำให้เกิดแฟล็ก "Just my code" ฉันเดาว่ามีข้อผิดพลาดบางอย่างเมื่อเรียกใช้ VS 2 อินสแตนซ์และเว็บเซิร์ฟเวอร์แบบสแตนด์อะโลนและอาจมีมากกว่านั้น
LosManos

9

Microsoft ได้เปลี่ยนตรรกะอย่างละเอียดในหน้าต่างข้อยกเว้นใหม่

ดูhttp://blogs.msdn.com/b/visualstudioalm/archive/2015/02/23/the-new-exception-settings-window-in-visual-studio-2015.aspx

ส่วนสำคัญคือ:

หมายเหตุสำคัญ

  • หน้าต่างใหม่นี้มีฟังก์ชันการทำงานทั้งหมดเหมือนกับกล่องโต้ตอบโมดอลเก่า ความสามารถของดีบักเกอร์ไม่มีการเปลี่ยนแปลงเฉพาะวิธีที่คุณสามารถเข้าถึงได้
  • ดีบักเกอร์จะหยุดทำงานเสมอเมื่อไม่มีการจัดการข้อยกเว้น
  • การตั้งค่าที่จะเปลี่ยนแปลงหากดีบักเกอร์แตกข้อยกเว้นที่ผู้ใช้ไม่สามารถจัดการได้ถูกย้ายไปภายใต้เมนูบริบท
  • ตำแหน่งเมนูได้ย้ายไปที่ Debug -> Windows -> Exception Settings

อย่างไรก็ตามถ้าเช่นฉันคุณมีGlobal Unhandled Exception Handlerในโค้ดของคุณรายการที่สองในรายการนั้นคือกุญแจสำคัญ: สำหรับฉันไม่มีข้อยกเว้นใด ๆ ที่จะไม่สามารถจัดการได้อย่างแท้จริงซึ่งดูเหมือนว่าจะแตกต่างจาก VS2013

ในการเรียกคืนพฤติกรรมที่ VS แบ่งข้อยกเว้นที่ไม่สามารถจัดการได้ฉันต้องทำเครื่องหมายในประเภทข้อยกเว้นทั้งหมดที่ฉันต้องการหยุดพักจากนั้นประการที่สองให้แน่ใจว่า "ตัวเลือกเพิ่มเติม" (คุณอาจต้องทำให้คอลัมน์นี้มองเห็นได้ *) สำหรับ "ดำเนินการต่อ เมื่อไม่มีการจัดการในรหัสผู้ใช้ " ไม่ได้ตั้งค่า ตรรกะ VS2015 ดูเหมือนจะไม่ถือว่าGlobal Unhandled Exception Handlerของฉันเป็น "จัดการในรหัสผู้ใช้" ดังนั้นจึงไม่สามารถแก้ไขสิ่งเหล่านี้ได้ มันไม่ผิดข้อยกเว้นที่จับได้ สิ่งนี้ทำให้มันทำงานเหมือนที่ VS2013 ทำ

* วิธีเปิดใช้งานคอลัมน์ "การดำเนินการเพิ่มเติม" * วิธีเปิดใช้งานคอลัมน์ "การดำเนินการเพิ่มเติม"


2
สิ่งนี้ใช้ไม่ได้เหมือนกับ VS2013 ทุกประการเพราะจะทำลายข้อยกเว้นที่ผู้ใช้จัดการด้วยการตั้งค่าที่คุณแนะนำซึ่งไม่ได้เป็นเช่นนั้นในอดีต
carlin.scott

คุณทำให้คอลัมน์ "ตัวเลือกเพิ่มเติม" มองเห็นได้อย่างไร
UuDdLrLrSs

@DaveInCaz คลิกขวาที่หัวคอลัมน์> "แสดงคอลัมน์"> "การดำเนินการเพิ่มเติม"
oatsoda

7

หากฉันอ่านระหว่างบรรทัดที่นี่อย่างถูกต้องปัญหาก็คือข้อยกเว้นของคุณ 'หายไป' อย่างมีประสิทธิภาพแม้ว่าพฤติกรรมดีบักเกอร์เริ่มต้นควรทำลายข้อยกเว้นที่ไม่สามารถจัดการได้

หากคุณมีวิธีการแบบอะซิงโครนัสคุณอาจพบปัญหานี้เนื่องจากข้อยกเว้นที่ไม่พบในเธรดพูลเธรดซึ่งเป็นส่วนหนึ่งของความต่อเนื่องของงานไม่ถือว่าเป็นข้อยกเว้นที่ไม่สามารถจัดการได้ แต่พวกมันจะถูกกลืนและเก็บไว้กับงาน

ตัวอย่างเช่นดูรหัสนี้:

class Program
{
    static void Main(string[] args)
    {
        Test();
        Console.ReadLine();
    }

    private async static Task Test()
    {
        await Task.Delay(100);
        throw new Exception("Exception!");
    }
}

หากคุณรันโปรแกรมนี้ด้วยการตั้งค่าดีบักเกอร์เริ่มต้น (หยุดเฉพาะข้อยกเว้นที่ไม่ได้จัดการเท่านั้น) ดีบักเกอร์จะไม่หยุดทำงาน เนื่องจากเธรดพูลเธรดที่จัดสรรให้กับความต่อเนื่องกลืนข้อยกเว้น (ส่งต่อไปยังอินสแตนซ์งาน) และปล่อยตัวเองกลับไปที่พูล

โปรดทราบว่าในกรณีนี้ปัญหาที่แท้จริงคือไม่เคยตรวจสอบการTaskส่งคืน Test()หากคุณมีลอจิก 'fire-and-forget' ประเภทเดียวกันในโค้ดของคุณคุณจะไม่เห็นข้อยกเว้นในขณะที่ถูกโยนทิ้ง (แม้ว่ามันจะ 'ไม่จัดการ' ในวิธีการก็ตาม); ข้อยกเว้นจะปรากฏขึ้นเมื่อคุณสังเกตงานโดยรอตรวจสอบผลลัพธ์หรือดูข้อยกเว้นอย่างชัดเจน

นี่เป็นเพียงการคาดเดา แต่ฉันคิดว่าคุณน่าจะสังเกตอะไรแบบนี้


แม้ว่าสิ่งนี้อาจไม่เกี่ยวข้องกับปัญหาของ op แต่ก็เป็นจุดที่ดีมากเกี่ยวกับข้อยกเว้นที่เกิดขึ้นในกิจวัตร async
Phil Cooper

มีวิธีทำให้ดีบักเกอร์หยุดแม้ว่าข้อยกเว้นจะถูกเก็บไว้เช่นนั้นหรือไม่?
Lucas

@ ลูคัสไม่ว่าฉันจะรู้ถึงแม้ว่าคุณจะเข้าใกล้ได้ด้วยการเปลี่ยนแปลงโค้ดบางอย่าง หากเนื้อหาของเมธอด fire-and-forget มีบล็อก try-catch คุณสามารถเพิ่มการDebugger.Break()โทรที่ชัดเจนได้ อีกวิธีหนึ่งคือคุณสามารถเพิ่ม Explicit Debugger.Break()ในTaskScheduler.UnobservedTaskExceptionตัวจัดการได้แม้ว่าข้อเสียที่นี่คือสิ่งนี้สามารถเริ่มทำงานได้ช้ากว่าข้อยกเว้นเดิมมากเนื่องจากเกิดขึ้นกับเธรด Finalizer เมื่องานได้รับการล้าง โดยทั่วไปคุณควรพยายามสังเกตผลลัพธ์ของ Task อยู่เสมอหรืออย่างน้อยก็มี try-catch block เพื่อบันทึกในเวลาที่ล้มเหลว
Dan Bryant

3

จากประสบการณ์ของฉันการตั้งค่าข้อยกเว้นในปี 2015 ถูกโยนออกไปอย่างสิ้นเชิงหากคุณเปลี่ยนแปลงอะไร

คาดว่าถ้าคุณอยู่จนถึงกลุ่มแม่ "CLR" คุณก็ไม่ควรได้รับการดำเนินการใด ๆ ที่ไม่เหมาะสมสำหรับการจัดการ คุณจะพังเสมอหากไม่มีการจัดการข้อยกเว้น แต่ถ้าคุณมีกลุ่ม CLR ที่ไม่ถูกเลือกรหัสในการลอง ... catch ก็ไม่ควรทำให้เกิดการหยุดพัก ไม่เป็นเช่นนั้น

วิธีแก้ไข: ในกล่องเครื่องมือการตั้งค่าข้อยกเว้นใหม่คลิกขวาและเลือก "คืนค่าเริ่มต้น" Taadaaaa ... มันทำตัวปกติอีกแล้ว ตอนนี้อย่าคาดคั้นกับมัน


1

ลองทำตามคำแนะนำ:

  1. ในหน้าต่าง Exception Settings เปิดเมนูบริบทโดยคลิกขวาในหน้าต่างจากนั้นเลือก Show Columns (หากคุณปิด Just My Code คุณจะไม่เห็นคำสั่งนี้)
  2. คุณควรเห็นคอลัมน์ที่สองชื่อการดำเนินการเพิ่มเติม คอลัมน์นี้แสดงดำเนินการต่อเมื่อไม่มีการจัดการโดยรหัสผู้ใช้ในข้อยกเว้นเฉพาะซึ่งหมายความว่าดีบักเกอร์จะไม่หยุดทำงานหากข้อยกเว้นนั้นไม่ได้รับการจัดการในรหัสผู้ใช้ แต่ได้รับการจัดการในโค้ดภายนอก
  3. คุณสามารถเปลี่ยนการตั้งค่านี้สำหรับข้อยกเว้นเฉพาะ (เลือกข้อยกเว้นคลิกขวาและเลือก / ยกเลิกการเลือกดำเนินการต่อเมื่อไม่ได้จัดการในรหัสผู้ใช้) หรือสำหรับหมวดหมู่ทั้งหมดของข้อยกเว้น (ตัวอย่างเช่นข้อยกเว้นรันไทม์ภาษาทั่วไปทั้งหมด)

https://msdn.microsoft.com/en-us/library/x85tt0dd.aspx


เห็นด้วยอย่างยิ่ง. เป็นการดีที่จะไม่แสดงคอลัมน์นี้โดยค่าเริ่มต้น ใช้เวลาหามันนานมาก นอกจากนี้ความหมายของ " ข้อยกเว้นที่ไม่สามารถจัดการผู้ใช้ " นั้นค่อนข้างไม่ชัดเจน ฉันมีตัวจัดการการยกเลิกงาน (บางอย่างเช่นtry { task.Wait(); } catch { ... }) และ OperationCanceledException ในงานถือว่าไม่ได้รับการจัดการในรหัสผู้ใช้อย่างใด
ซึล

1

มันค่อนข้างสับสนเล็กน้อยและในความคิดของฉันไม่ดีเท่ากล่องโต้ตอบข้อยกเว้นแบบเก่า แต่อย่างไรก็ตาม

หากมีข้อยกเว้นอยู่ในรายการและทำเครื่องหมายแล้วตัวดีบักเกอร์จะหยุดทำงานเมื่อใดก็ตามที่เกิดข้อยกเว้น

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

ตัวอย่างเช่นในภาพหน้าจอด้านล่างดีบักเกอร์จะหยุดทำงานทุกครั้งที่มีการSystem.AccessViolationExceptionโยน แต่สำหรับข้อยกเว้นอื่น ๆ ทั้งหมดจะพังก็ต่อเมื่อผู้ใช้ไม่สามารถจัดการข้อยกเว้นได้

หน้าต่างเครื่องมือยกเว้น Visual Studio 2015


1

เมื่อฉันอัปเกรดเป็น VS2015 ฉันยังมีปัญหาเกี่ยวกับข้อยกเว้นที่ใช้ในการ "ทำลาย" แอปพลิเคชัน แต่ตอนนี้ถูกเพิกเฉยและส่งต่อไป มีหลายครั้งที่เราต้องการให้โค้ดของเราจงใจโยนข้อยกเว้นในจุดที่เราต้องการให้โค้ดหยุดแทนที่จะดำเนินการต่อ เราใช้วลีนี้เสมอThrow New Exception("Message")เพื่อให้รหัสของเราทำลาย:

    If SomethingReallyBad = True Then
        Throw New Exception("Something Really Bad happened and we cannot continue.")
    End If

ด้วย VS2015, คลาสสิก "System.Exception" Throw New Exceptionคือสิ่งที่จะถูกโยนทิ้งเมื่อเราพูด ดังนั้นเราจำเป็นต้องตรวจสอบเครื่องหมาย "System.Exception" ในการตั้งค่าข้อยกเว้นใหม่:

เลือกช่อง System.Exception

เมื่อตรวจสอบแล้วรหัสของเราก็เป็นไปตามที่คาดไว้


1

วิธีแก้ปัญหาคือตรงข้ามกับความหมายที่คุณคิดว่ากำลังตั้งค่า คุณต้องให้แน่ใจว่าต่อไปเมื่อไม่สามารถจัดการได้ในรหัสผู้ใช้จะไม่เปิดใช้งานเช่นไม่ได้ตรวจสอบตามที่แสดงภายใต้การดำเนินการเพิ่มเติมคอลัมน์ในข้อยกเว้นการตั้งค่าแท็บ - ดูด้านล่าง:

คุณกำลังบอกว่าอย่าดำเนินการต่อ (เช่นหยุดพัก) เมื่อไม่มีการจัดการในรหัส

หน้าต่างการตั้งค่าข้อยกเว้น (Control + Alt + E)

เพื่อทำสิ่งนี้:

  1. คลิกขวาที่ข้อยกเว้นหรือชุดข้อยกเว้นที่คุณสนใจ (เช่นโดยปกติจะเป็นบรรทัดบนสุด "ข้อยกเว้นรันไทม์ภาษาทั่วไป" ในแผนภูมิ)
  2. เลือกตัวเลือกดำเนินการต่อเมื่อไม่มีการจัดการใน User Code (ดูด้านล่าง)
  3. ตรวจสอบว่ามีข้อยกเว้นที่จะไม่ได้ตรวจสอบ (ดูด้านล่าง)
  4. ทำการดีบักต่อไป

ใส่คำอธิบายภาพที่นี่

นั่นทำให้ฉันมีความสุขอีกครั้ง

นี่คือใน VS 2015


0

มีข้อผิดพลาดบางอย่างใน Visual Studio ที่อาจทำให้ติดขัดโดยต้องรีสตาร์ท แม้ VS2015.

ฉันมีสถานการณ์แบบเธรดเดียวที่ a NullReferenceExceptionถูกจับโดยตัวจัดการ 'ด้านนอก' (ยังอยู่ในรหัสของฉัน) แม้ว่าฉันจะขอให้มันทำลายเมื่อมันถูกยกขึ้น

ฉันรู้ว่านี่เป็นข้อยกเว้น 'จัดการ' และคุณกำลังพูดถึง 'ไม่สามารถจัดการได้' - อย่างไรก็ตามฉันค่อนข้างแน่ใจว่าบางครั้งการรีสตาร์ท VS อย่างรวดเร็วจะแก้ไขปัญหานี้ได้หาก IISRESET ไม่ทำ


0

Visual Studio 2017 ทำงานได้ดีกับการจัดการข้อผิดพลาด ในทางกลับกัน Visual Studio 2015 ดูดข้อผิดพลาดในการจัดการกับงานเนื่องจากในโหมดดีบักข้อยกเว้นทั้งหมดที่เกิดขึ้นในงาน async จะถูกจับได้ แต่ถ้าฉันก้าวข้ามมันก็จะแฮงค์ไปเรื่อย ๆ หากดำเนินการโดยไม่แก้ไขจุดบกพร่องจะแฮงค์ไปเรื่อย ๆ โดยไม่มีข้อยกเว้นที่ถูกจับ !!! ฉันชอบวิชวลสตูดิโอและใช้มันมาตั้งแต่ปี 1995 และ 2015 เป็นเวอร์ชันที่แย่กว่าเดิมแม้ว่าฉันจะกระโดดจากปี 2010 มาเป็นปี 2015 ฉันใช้เวลา 8 ชั่วโมงเพื่อให้การจัดการข้อยกเว้นนี้ทำงานได้โดยไม่ประสบความสำเร็จ ฉันคัดลอกรหัสที่ตรงกับปี 2017 บนคอมพิวเตอร์ที่บ้านและทำงานได้อย่างสมบูรณ์ ฉันรู้สึกหงุดหงิดมากที่ Microsoft ผลักดันงานให้อยู่ในกรอบที่คอมไพเลอร์ปี 2015 ไม่สามารถจัดการได้อย่างถูกต้อง

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