我在可能产生异常的代码行中进行了try-catch,但是,catch并未捕获该异常。我仍然遇到未处理的异常。为什么会这样?
在此示例中,我已经有一个位于C:\ temp \ defect.bmp的图像,当我尝试使用相同的路径保存图像时,在昏暗的imageStream代码行上得到了System.IO.IOException,因为我错误地使用了CreateNew模式,因此应该抛出一个异常,但是为什么Catch ex as Exception不能捕获它呢?
Class MainWindow
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
Dim image As New WpfImage("C:\TEMP\defect.bmp")
Try
Dim imageStream As New IO.FileStream("C:\TEMP\defect.bmp", IO.FileMode.CreateNew)
image.Save(imageStream, ImageFormat.BMP)
Catch ex As Exception
MsgBox("This exception has been caught: " & ex.Message)
End Try
End Sub
End Class
答案 0 :(得分:0)
我发现了问题。我使用的API(用于WPFImage)具有自己的Exception类。我在文件顶部有一个用于其命名空间的导入,因此在我的try-catch中,它不是System.Exception,而是API命名空间中的Exception。我对让API具有自己的同名Exception类的公司感到失望。
我将代码更改为: 捕获为System.Exception
然后它可以正常工作并正确捕获异常。