C# 未被捕获的异常

C# 未被捕获的异常,c#,wpf,wia,C#,Wpf,Wia,我想在我的应用程序中使用WIA,代码如下所示。但是,图中所示的中的异常未被catch块捕获 WIA.ICommonDialog wiaCommonDialog = new WIA.CommonDialog(); while (hatNochSeiten) { try { AktiverScanner.Geraet = AktiverScanner.GeraeteInfo.Connect(); WIA.Item geraetObjekt = n

我想在我的应用程序中使用WIA,代码如下所示。但是,图中所示的中的异常未被catch块捕获

WIA.ICommonDialog wiaCommonDialog = new WIA.CommonDialog();

while (hatNochSeiten)
{
    try
    {

        AktiverScanner.Geraet = AktiverScanner.GeraeteInfo.Connect();

        WIA.Item geraetObjekt = null;

        geraetObjekt = AktiverScanner.Geraet.Items[1];
        geraetObjekt.Properties["Bits Per Pixel"].set_Value(1);
        geraetObjekt.Properties["Horizontal Resolution"].set_Value(300);
        geraetObjekt.Properties["Vertical Resolution"].set_Value(300);

        WIA.ImageFile scanDatei = (ImageFile)wiaCommonDialog.ShowTransfer(geraetObjekt, ScannerModel.wiaFormatJPEG, false);

        scanDatei.SaveFile(@"C:\scan_" + System.DateTime.Now.ToString("yyyyMMdd-HHmmss") + "_Seite" + seiten.ToString("000") + ".jpg");

        Marshal.ReleaseComObject(scanDatei);

        var status = (int)AktiverScanner.Geraet.Properties["Document Handling Status"].get_Value();
        hatNochSeiten = (status & AktiverScanner.Eigenschaftlesen(3087)) > 0;


        geraetObjekt = null;
        scanDatei = null;
        seiten++;
    }
    catch (System.Runtime.InteropServices.COMException comEx)
    {
        System.Diagnostics.Debugger.Break();
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debugger.Break();
    }
调试器因此错误而中断,因为扫描器仍然忙,但是应该从第二个catch块捕获异常

WIA.ICommonDialog wiaCommonDialog = new WIA.CommonDialog();

while (hatNochSeiten)
{
    try
    {

        AktiverScanner.Geraet = AktiverScanner.GeraeteInfo.Connect();

        WIA.Item geraetObjekt = null;

        geraetObjekt = AktiverScanner.Geraet.Items[1];
        geraetObjekt.Properties["Bits Per Pixel"].set_Value(1);
        geraetObjekt.Properties["Horizontal Resolution"].set_Value(300);
        geraetObjekt.Properties["Vertical Resolution"].set_Value(300);

        WIA.ImageFile scanDatei = (ImageFile)wiaCommonDialog.ShowTransfer(geraetObjekt, ScannerModel.wiaFormatJPEG, false);

        scanDatei.SaveFile(@"C:\scan_" + System.DateTime.Now.ToString("yyyyMMdd-HHmmss") + "_Seite" + seiten.ToString("000") + ".jpg");

        Marshal.ReleaseComObject(scanDatei);

        var status = (int)AktiverScanner.Geraet.Properties["Document Handling Status"].get_Value();
        hatNochSeiten = (status & AktiverScanner.Eigenschaftlesen(3087)) > 0;


        geraetObjekt = null;
        scanDatei = null;
        seiten++;
    }
    catch (System.Runtime.InteropServices.COMException comEx)
    {
        System.Diagnostics.Debugger.Break();
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debugger.Break();
    }
在以下情况下,Visual Studio将显示异常抛出的Ausgelöste Ausnahme对话框:

引发未处理的异常 您已启用在某些异常类型的异常设置中引发时中断,并且引发了其中一种异常类型 在后一种情况下,它不会阻止catch块正确捕获异常。当您通常通过按F5或F10继续调试时,程序执行将正确跳转到相应的处理catch块的开头。如果您不希望此异常类型再次出现此对话框,请取消选中“在引发此异常类型时中断”选项,或者取消选中“异常设置”窗口菜单->调试->窗口->异常设置中的System.Runtime.InteropServices.COMException


如果仍然没有捕获异常,并且存在适当的捕获块,另一个原因可能是执行的代码与实际源代码不匹配。

问题中的代码与屏幕截图中的代码不匹配。您看到的异常是从代码的不同部分抛出的,而不是上面显示的部分吗?它是相同的代码,我删除了不必要的部分,因此可以更容易地读取。