CVe*_*tex 75 .net c# exception
以下代码捕获EOS异常
using (var reader = new BinaryReader(httpRequestBodyStream)) {
try {
while (true) {
bodyByteList.Add(reader.ReadByte());
}
} catch (EndOfStreamException) { }
}
Run Code Online (Sandbox Code Playgroud)
那么为什么我的控制台仍然会收到第一次机会异常?
mscorlib.dll中发生了'System.IO.EndOfStreamException'类型的第一次机会异常
有没有办法隐藏这些第一次机会异常消息?
Bra*_*son 79
"第一次机会"异常的要点是你看到它们是预处理程序,这样你就可以在抛出时调试它们."第二次机会"异常是没有适当处理程序的异常.有时候你想要抓住"第一次偶然"的例外情况,因为重要的是要看看当它被抛出时发生了什么,即使有人正在捕捉它.
没有什么可担心的.这是正常行为.
Ale*_*eby 19
1)在Visual Studio中,您可以更改调试器处理(中断)异常的方式的设置.
转到"调试">"例外".(请注意,这可能不在您的菜单中,具体取决于您的Visual Studio环境设置.如果不是仅使用"自定义"菜单将其添加到菜单中.)
在那里,您将看到一个异常对话框,以及何时打破它们.
在"公共语言运行时异常"行中,您可以取消选择抛出(这应该会让您不必担心第一次机会异常),如果您愿意,也可以取消选择User-unhandeled(我不建议).
2)您获得的消息不应该在控制台中,而应该出现在Visual Studio的"输出"窗口中.如果是后一种情况,那么我没有找到删除它的可能性,但是如果你在没有Visual Studio的情况下运行应用程序就不会出现.
希望有所帮助.
lou*_*dej 11
与Java不同,.NET处理能力方面的异常相当昂贵,在正常和成功的执行路径中应避免处理异常.
您不仅可以避免在控制台窗口中出现混乱,而且还可以提高性能,并且可以使.NET CLR Exceptions等性能计数器更有意义.
在这个例子中你会使用
while (reader.PeekChar() != -1)
{
bodyByteList.Add(reader.ReadByte());
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我有这个问题,无法弄清楚抛出异常的位置.所以我的解决方案是让Visual Studio停止在这种异常上执行.
如果您想更好地控制这些消息,您可以添加一个处理程序:
Friend Sub AddTheHandler()
AddHandler AppDomain.CurrentDomain.FirstChanceException, AddressOf FirstChanceExceptionHandler
End Sub
<Conditional("DEBUG")>
Friend Sub FirstChanceExceptionHandler( source As Object, e As Runtime.ExceptionServices.FirstChanceExceptionEventArgs)
' Process first chance exception
End Sub
Run Code Online (Sandbox Code Playgroud)
这允许您像其他评论中提到的那样让它们保持沉默,但仍然确保您能够意识到它们。我发现如果我将消息和时间戳记录到文本文件中,那么很高兴看到我真正抛出了多少个消息。
归档时间: |
|
查看次数: |
66844 次 |
最近记录: |