捕获未捕获到异常

时间:2018-08-12 07:21:20

标签: c# wpf wia

我想在我的应用中使用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块中捕获异常。

enter image description here

1 个答案:

答案 0 :(得分:1)

在以下情况下,Visual Studio显示“抛出异常” (AusgelösteAusnahme)对话框。

  • 引发未处理的异常
  • 您已为某些异常类型在“异常设置” 中启用了“抛出时中断”

在后一种情况下,它不会阻止catch块正确捕获异常。当您继续调试时(通常通过按F5F10),程序执行将正确跳转到适当处理catch块的开头。如果您不希望此对话框针对该异常类型再次出现,请取消选中“抛出该异常类型时中断”( BeiAuslösen死于Ausnahmetyps失败)选项,或取消选中“ System.Runtime.InteropServices.COMException在“例外设置” 窗口中(“ 菜单->调试-> Windows->例外设置”)。

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