【问题标题】:Unhandled Exception in C# (System.IO.IOException)C# 中未处理的异常 (System.IO.IOException)
【发布时间】:2019-05-14 03:10:05
【问题描述】:

当读取/写入死套接字连接时,我使用获取下一个异常:

System.IO.IOException: Unable to read data from the transport connection: Operation on non-blocking socket would block

但我无法在 try-catch 的 catch 部分中捕获它。有任何想法吗?它说Unhandled Exception..

这是代码:

try
{
    Bitmap bmp = BitmapFactory.DecodeStream(CommunicationHandler.GetStream());
}
catch (Exception ex)
{
    if (ex is System.IO.IOException)
        {
            //Some code which is unreachable..
        }
}

我认为它与Bitmap obj 无关,而是某种无法捕获的异常。好像程序甚至没有进入catch部分。

【问题讨论】:

  • 还有代码还是只有这个?您确定Exception 出现在该行中吗?
  • 是的,这就是调试器所说的......@RonaldoAraújoAlves
  • 技术上不可能在像这样的通用包罗万象的catch (Exception ex) 中出现未处理的异常。如果您首先专门捕获IOException 怎么办?你可以捕获多种异常类型,你知道的。

标签: c# exception bitmap ioexception


【解决方案1】:

理论上,您的代码应该可以工作。以下是一些案例供您检查:

  • 异常不是 System.IO.IOException 类型。查看文档,快速搜索发现this。这可能是自定义异常。如果您有可能也可以像这样检查异常的类型:

    ex.GetType();

  • 如果你说你没有点击 catch 块,你确定你没有调用异步方法,它没有在某处等待?

【讨论】:

  • 我用ex.ToString() 尝试了第一个选项,但正如调试器所说,它没有被处理。你能解释一下另一个选项吗?我没有真正明白你的意思。
  • 试试 ex.GetType();这将返回异常的确切类型,并查看它是否真的是 System.IO.IOException。 ex.ToString() 创建并返回当前异常的字符串表示形式,在这种情况下您不需要它。我提到的第二件事是,如果您正在编写异步代码或只是在 try 块中的某处调用异步方法,则有可能某些东西正在引发异常并且您没有进入 catch 块。尽管这种可能性较小。如果可以,请提供更多信息,如果这些都没有帮助。干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
相关资源
最近更新 更多