尝试在.net中捕获

Ric*_*eri 0 .net vb.net error-handling try-catch

我正在寻找以下最有效和最优雅的方式:

  • 当Filename有效,损坏,不存在时,可以调用我的函数

该函数将反序列化XML对象.

主要可能的结果是:

  • 文件不存在
  • XML文件出错

如果我这样写,如果文件损坏,读者将不会被关闭.如果我在finally块中写入reader.close(),它会在给它分配值之前给出一个关于使用read的警告.

那么,我该如何解决这个问题?

Public Function DeSerializzaXML(ByVal FileName As String, ByRef tmpObj As Object, ByVal tmpClass As Type) As Boolean
    Dim serializer As XmlSerializer
    Dim reader As StreamReader
    Dim tmpSuccess As Boolean = False
    Try
        serializer = New XmlSerializer(tmpClass)
        reader = New StreamReader(FileName)
        tmpObj = serializer.Deserialize(reader)
        reader.Close()
        tmpSuccess = True
    Catch ex As Exception
        AggiungiRigaSuFile(ErroriPath, FileName + ", " + ex.Message, Configurazione.DiagnosticaOff, True)
    Finally

    End Try

    Return tmpSuccess
End Function
Run Code Online (Sandbox Code Playgroud)

Iga*_*hka 5

尝试在阅读器初始化中使用'using'语句.如果它是一次性的,那么当调用Dispose方法时,阅读器将自动关闭

更多来自微软

作为替代方法,您可以在不同的异常类型上使用多个catch语句.