2017-06-27 16 views
7

Visual Studio 2017 (đột nhiên) vi phạm trên tất cả ngoại lệ. Điều đó có nghĩa là, nếu tôi tắt chúng trong các thiết lập ngoại lệ (nhấn CTRL + ALT + E trong khi gỡ lỗi), trình gỡ rối vẫn sẽ phá vỡ chúng. Tôi không biết thời tiết này chỉ là một lỗi của VS Tôi không thể thay đổi và do đó phải sống với, hoặc thời tiết có một giải pháp đơn giản cho nó.VS 17 vi phạm tất cả ngoại lệ

Đây là cửa sổ cài đặt ngoại lệ: the exception settings

và điều này ngoại trừ VS phá vỡ vào lúc: the exception

Bằng cách này, tôi cũng đã cố gắng mà trừ xinh đẹp (không có gì xảy ra nếu tôi nhấn nó) hoặc thêm một điều kiện không thể (VS vẫn phá vỡ ngoại lệ).

Tôi cũng đã thử nghiệm ngoại lệ khác (bằng cách đơn giản ném chúng), mà tôi ngừng hoạt động trước đây, và họ nhận được ném và tôi cũng đã thử nghiệm cùng một vấn đề trong các dự án khác, nơi mà nó xuất hiện cũng như: the issue in other projects

tôi thậm chí còn đưa toàn bộ nội dung vào câu lệnh thử bắt nhưng VS vẫn bị ngắt:

InitializeComponent(); 
try 
{ 
    var t = new Thread (() => 
    { 
     while (!IsHandleCreated) {} //It breaks here (similiar to the screenshots) 
     while (true) 
      Invoke (new Action (() => Size = new Size())); 
    }); 
    while (true) 
    { 
     t.Start(); 
     Thread.Sleep (100); 
     t.Abort(); 
    } 
} 
catch (ThreadAbortException) { } 

Nó không xuất hiện trong các IDE khác (như Rider) trên PC của tôi và không xuất hiện trên các máy tính khác trong VS. Nó không phải lúc nào cũng xuất hiện trên PC của tôi, nó chỉ mới bắt đầu gần đây và chỉ trong chế độ gỡ lỗi. Và nếu tôi tiếp tục thực hiện (với F5) nó chỉ tiếp tục bình thường.

EDIT Như tôi đã đưa catch bên thread nó cư xử một chút khác nhau (Tôi xin lỗi vì đưa hình ảnh ở đây, nhưng tôi nghĩ rằng họ ấn tượng hơn trong trường hợp đó): new exception location

Có thể bất kỳ ai giải thích hành vi này?

EDIT Dường như là bình thường đối với ThreadAbortExceptions để ngắt lại ở cuối câu lệnh bắt. Tuy nhiên, VS vẫn không nên phá vỡ ngoại lệ này chút nào.

+0

là lưu ý phụ: thử bắt của bạn phải nằm bên trong luồng được tạo, hiện tại bạn đang thử bắt được chuỗi giao diện người dùng và không có ngoại lệ nào ... –

+0

@ M.kazemAkhgary Tôi đã chỉnh sửa câu hỏi của mình – MetaColon

+0

Nhìn - đôi khi nó chỉ là quá tốn kém thời gian để cố gắng tìm và giải thích các lỗi trong trường hợp như thế này, nơi bạn không thể tái sản xuất nó theo cách "bình thường". (1) thử khởi động lại và (2) hoàn nguyên về mã trước đó của bạn và xây dựng đến thời điểm đó. Vâng vâng tôi biết bình luận của tôi không phải là "câu trả lời", nhưng bạn có thể dành hàng giờ liền để theo dõi điều này một cách vô ích - tốt hơn là cứ tiếp tục. –

Trả lời

0

Tôi đã gặp sự cố tương tự.

tôi cố định nó bằng cách bỏ chọn "Break khi ngoại lệ vượt AppDomain hoặc quản lý/mẹ đẻ ranh giới" trong Tools> Options> Debugging> General

+0

Vì nó xảy ra tôi không sử dụng VS nữa (tôi sử dụng Rider thay vì), vì vậy tôi sẽ không thể kiểm tra nó. Có lẽ ai đó khác có thể kiểm tra nó, vì vậy tôi có thể đánh dấu nó như một câu trả lời nếu nó hoạt động. – MetaColon

0

tôi không thể xác nhận cho dù điều này xảy ra với các loại dự án khác, nhưng nó xảy ra với tôi một cách nhất quán với (Visual Studio Tools for Python) VSTP.

Mặc dù nó ít hơn thỏa đáng, ít nhất nó có thể làm im lặng ngoại lệ và cho phép bạn tiếp tục làm việc trong hòa bình cho đến khi có giải pháp tốt hơn. Trong trường hợp của tôi, gần như không thể gỡ lỗi mã của tôi, vì StopIteration bị hỏng trong mỗi lần lặp lại.

Chọn Gỡ lỗi> Windows> Cài đặt ngoại lệ s hoặc nhấn Ctrl-Alt-E.Y

Exception Settings

Nhấp chuột phải bất cứ nơi nào trên Window và chọn Hiện Cột> Hành động bổ sung. Bạn sẽ có cột "Tác vụ bổ sung" xuất hiện nếu cột này chưa có.

Nhấp chuột phải vào một ngoại lệ cụ thể bạn muốn tắt tiếng hoặc nhấp vào hộp kiểm cấp cao nhất để chọn toàn bộ danh mục ngoại lệ, tức là Ngoại lệ Python. Nhấp vào Tiếp tục khi Unhandled trong Mã người dùng.

Lặp lại cho từng ngoại lệ hoặc danh mục ngoại lệ bổ sung.

+0

Vì nó xảy ra tôi không sử dụng VS nữa (tôi sử dụng Rider thay vào đó), vì vậy tôi sẽ không thể kiểm tra nó. Có lẽ ai đó khác có thể kiểm tra nó, vì vậy tôi có thể đánh dấu nó như một câu trả lời nếu nó hoạt động. – MetaColon

+0

Bạn nghĩ gì về người lái? Có vui không? Nó có dựa trên JRE không? –

+0

Vì đây là chủ yếu dựa trên ý kiến, nó không hoàn toàn thuộc về nơi này, nhưng tôi thích nó rất nhiều và không có ý tưởng nó là JRE hay không. – MetaColon

Các vấn đề liên quan