为什么我的ASP.NET Core 9应用程序将一堆(看似无害的)例外扔给Visual Studio Ouput面板? 我在我的ASP.NET Core 9.0 App中使用sqlite。每当我在Visual Studio中进行调试时,我都会在输出面板中遇到数百个错误: 15:43:08:084异常投掷:'Microsoft.data.sqlite.

问题描述 投票:0回答:1
不仅如此 - 我在各种库中收到了各种各样的信息 - 我永远无法抓住它们,而且它们似乎不会造成任何损害。

Exception thrown:

or

15:49:05:175 Exception thrown: 'System.IO.FileNotFoundException' in Lucene.Net.dll

度量时期,我已经深入了我的代码,我可以隔离导致错误出现的方法调用 - 总是我调用别人的代码,所以将例外置于代码中,我不这样做有任何控制权。

这些是什么?我应该担心它们吗?
    

认为明显 - 这些是例外:)...是的,如果您的应用程序应处理高负载,您通常应该担心它们。 .NET中的例外相对昂贵,并且可以将其删除可能会提高服务性能。在研究调查之前先测量。 comperly有三个类别

无法避免的外观(即网络故障,文件访问和类似的类似,首先检查状态实际上无法消除)。那些可能永远留在那里的人,您可能想确认这些人主要发生在启动时而不是每个请求。可以避免使用更具体的配置或依赖项(即,序列化的动态发现会抛出一些)。

使用不提供例外的无常见故障处理的库。比以另一种方式仔细跟踪错误,要抛出异常要容易得多(并且通常建议使用.NET中的方法)。适用于大多数非超级加载案例。如果您确实发现性能是一个问题 - 尝试找到替代方案/使用低级库并自己编写更多代码。在某些情况下,您自己的代码可能会切换到图书馆API的“无例外”变体(类似于

15:49:05:424 Exception thrown: 'System.FormatException' in System.Private.CoreLib.dll

c# runtime-error .net-9.0 asp.net-core-9.0
1个回答
2
投票
),但重量更高的心理成本是由开发人员与异常成本手动处理错误案例的精神成本。

通过忽略库中深处的错误掩盖自己的代码的实际问题。检查您的代码是否可以直接影响引发异常的代码 - 即传递“更好”(如空字符串而不是null for String参数)值可能有效。有些问题可能是由于数据出乎意料的问题 - sqlite/search在问题

-may

中指出可忽略的问题 - 可能缺少DB的索引或查找额外的解析器以进行搜索(这是我可以基于

的示例,例外,但没看过自己)
  • 在任何情况下,您都可以在抛出异常时检查堆栈(有时以及有时代码)来调查这些异常。有时,您可以看到有关例外情况的更多信息。如果您在呼叫堆栈上看到自己的代码,则可以指示可以做些不同的事情以避免例外。请注意,这是非常耗时且令人沮丧的,因此,如果您想在请求期间首先进行此类调查(因为这些调查代表了经常性成本)。
  • 要在Visual Studio中停止在代码外的例外情况,您可能需要在调试器属性中禁用“仅我的代码”复选框,因此当从库中抛出异常时,它将停止 -
    Exceptionsthe VisualStudio
    .inethe Debugger。
    	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.