C# Try-Catch语句不';";中止“;到达异常时的函数

C# Try-Catch语句不';";中止“;到达异常时的函数,c#,exception,naudio,C#,Exception,Naudio,这段代码已经运行了很长时间,但现在突然开始做这种疯狂的事情,有时,代码失败并使程序崩溃,即使我的代码在try-catch语句中。以下是失败的代码: try { audioFileReader = new AudioFileReader(file); // here's where Im getting the exception waveOut = new WaveOutEvent(); FadeInOut = new FadeInOutSampleProvider(audioFileReade

这段代码已经运行了很长时间,但现在突然开始做这种疯狂的事情,有时,代码失败并使程序崩溃,即使我的代码在try-catch语句中。以下是失败的代码:

try
{
audioFileReader = new AudioFileReader(file); // here's where Im getting the exception
waveOut = new WaveOutEvent();
FadeInOut = new FadeInOutSampleProvider(audioFileReader);
waveOut.Init(new SampleToWaveProvider(FadeInOut));
PlaySource = Filetype.MP3;
}
catch (Exception e)
{
OnError.Invoke(e);
PostError(e);
}
这是我得到的一个例外:

NAudio.dll中发生类型为“System.InvalidOperationException”的第一次意外异常

附加信息:获得采样率为48000的帧,在采样率为44100的MP3中。Mp3FileReader不支持采样率更改


为什么代码没有跳转到“catch”部分,而是崩溃了呢?

@Tokfrans-因为引发异常的不是您的代码

  • 转到工具/选项/调试并关闭“仅启用我的代码(仅限托管)”。或选择
  • 转到调试器/异常,并关闭公共语言运行时异常的“用户未处理”

您确定错误是否不在
catch
语句中吗?(OnError.Invoke或PostError方法)@Tokfrans,是否在调试器中检查它?提示:按Ctrl+Alt+E打开异常窗口。在
公共语言运行时异常
下选择
抛出
。所有异常都将直接显示在调试器中发生的位置,而不是更高的处理位置。@Lucasabiledebob是的,我尝试从catch中删除这些行,但没有更改。@Tokfrans,选中该框不会“破坏”程序,它只会提高程序中抛出异常的意识。您可以点击F5继续运行程序,如果您的代码正确处理异常,那么它将继续运行。