Exception 在Catch for visual basic中引发异常

Exception 在Catch for visual basic中引发异常,exception,throw,basic,Exception,Throw,Basic,我的问题是在Catch块中使用“抛出新异常” 我已经看到MessageBoxmessage在一些Catch块中使用,或者抛出新的Exceptionmessage 有区别吗?为什么我要使用Throw New Exception而不使用消息框呢。MessageBox显示一个消息框。如果有人以这种方式编写代码,这意味着捕获了异常,需要通知用户 抛出catch块通常用于重命名异常。例如,您正在读取一个文件。从文件已打开到设备未准备就绪,读取文件可能引发一系列异常。但您的代码希望向外部代码报告无法打开文件

我的问题是在Catch块中使用“抛出新异常”

我已经看到MessageBoxmessage在一些Catch块中使用,或者抛出新的Exceptionmessage

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

MessageBox显示一个消息框。如果有人以这种方式编写代码,这意味着捕获了异常,需要通知用户

抛出catch块通常用于重命名异常。例如,您正在读取一个文件。从文件已打开到设备未准备就绪,读取文件可能引发一系列异常。但您的代码希望向外部代码报告无法打开文件或文件格式错误。外部代码不太关心文件无法打开的原因

因此,在打开文件时捕获异常,然后向上抛出“无法打开文件”异常,这样外部代码就不需要处理所有这些异常

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