在 Visual Basic 的 Catch 中抛出异常

Throwing exception in Catch for visual basic

我的问题涉及在 Catch 块中使用 'Throw New Exception'。

我看到 MessageBox("message") 在一些 Catch 块中使用,或者 Throw New Exception("message").

有区别吗?为什么我会使用 Throw New Exception 而不是使用消息框。

MessageBox 显示消息框。如果有人这样写代码,就意味着捕获了异常,需要通知用户。

抛出 catch 块通常用于重命名异常。例如,您正在读取一个文件。读取文件会引发从 "file is already open" 到 "device is not ready" 的一系列异常。但是您的代码想要向外部代码报告它 "couldn't open file" 或 "file has a wrong format"。外部代码不太关心文件无法打开的原因。

因此,打开文件时的异常被捕获,然后向上抛出一个"couldn't open file"异常,这样外部代码就不需要处理所有这些异常。

Sub OuterCode()
    Try
        Dim s As String
        s = ReadFile()
        ParseFile(s)
    Catch e As CouldntReadFileException
        ' ...
    Catch e As ParsingException
        ' ...
    End Try
End Sub

Function ReadFile() As String
    Try
        ' Open file
    Catch e
        Throw New CouldntReadFileException()
    End Try
End Function

Sub ParseFile(s As String)
    ...
End Sub