【发布时间】:2016-09-01 10:47:09
【问题描述】:
SocketException 遇到一些奇怪的问题。随附的屏幕截图对此进行了详细说明。
为什么第一个 catch 块没有捕获异常,而它本来是要捕获 SocketException 并且抛出的异常又是 SocketException。
为什么要控制第二个 catch 块来捕获任何异常?
[编辑] : 在调试模式下也添加截图
【问题讨论】:
-
出于好奇,为什么要在发布模式下调试?
-
@CharlesMager 我的印象是,如果您重新抛出异常,它会在更高级别被捕获,而不是被同一尝试的下一个 catch 块捕获。
-
@user1666620 你是对的,当然 - 抱歉,我没有发现你的断点在哪里!
-
编译器或 JITter 可能已经意识到两个 catch 执行相同的工作并优化了第一个。如果 (a) 您在调试模式下进行调试,或者 (b) 您让它们记录不同的消息,会发生什么?
标签: c# exception-handling visual-studio-debugging