Visual Studio 2017(突然之间)打破所有异常。这意味着,如果我在例外设置中停用它们(在调试时按CTRL + ALT + E),调试器仍会中断它们。我不知道这只是VS的一个错误,我无法改变因此不得不忍受,或者有一个简单的解决方案。
顺便说一下,我也试过那个漂亮的减号(如果我按它就没有任何反应)或添加一个不可能的条件(VS仍然在例外情况下破坏)。
我还测试了其他异常(通过简单地抛出它们),我之前停用了它们,并且它们也被抛出,我在其他项目中测试了同样的问题,它也出现了:
我实际上甚至将整个内容放入try catch语句中,但VS仍然会破坏:
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) { }
它不会出现在我的电脑上的其他IDE(如Rider)中,也不会出现在VS中的其他电脑上。它并不总是出现在我的电脑上,它刚刚开始并且只在调试模式下启动。如果我继续执行(使用F5),它就会继续正常运行。
编辑当我把try catch放在线程中时,它表现得有点不同(我很抱歉把照片放在这里,但我认为它们更具表现力那种情况):
任何人可以解释这种行为吗?
编辑 ThreadAbortExceptions
在catch语句结束时再次中断似乎是正常的。但是,VS仍然不应该打破这个例外。
答案 0 :(得分:2)
我遇到了类似的问题。
我通过取消选中"在异常跨越AppDomain或托管/本机边界时中断" 工具>选项>调试>常规
答案 1 :(得分:1)
我无法确认这是否与其他项目类型一起发生,但它与我一致(Visual Studio Tools for Python)VSTP。
虽然它不太令人满意,但它至少可以使例外无声并让您继续平静地工作,直到更好的解决方案浮出水面。在我的情况下,几乎不可能调试我的代码,因为StopIteration在每次迭代中都会中断。
选择调试> Windows>例外设置或按 Ctrl-Alt-E 。 ÿ
右键单击窗口上的任意位置,然后选择显示列>其他行动。如果尚未显示“附加操作”列,则会显示该列。
右键单击要静音的特定异常,或单击顶级复选框以选择整个异常类别,即 Python异常。单击在用户代码中未处理时继续。
对每个额外的例外或例外类别重复。
答案 2 :(得分:1)
我通过在工具>选项>调试>常规中取消选中Enable Just My Code
来修复它
答案 3 :(得分:0)
我知道这有点晚了,但是ThreadAbortException与所有其他异常不同,并且需要一些特殊的处理,否则,如果您实际上没有处理它,它将自动在所有catch块的末尾重新抛出。应该处理的方式。