Local variables from a Try block are not available in a Catch block because they are separate blocks. If you want to use a variable in more than one block, declare the variable outside the Try...Catch...Finally structure.
The Try block contains code where an error can occur, while the Catch block contains code to handle any error that does occur. If an error occurs in the Try block, program control is passed to the appropriate Catch statement for disposition. The exception argument is an instance of the Exception class or a class that derives from the Exception class. The Exception class instance corresponds to the error that occurred in the Try block. The instance contains information about the error, including, among other things, its number and message.
If a Catch statement does not specify an exception argument, it catches any kind of system or application exception. You should always use this variation as the last Catch block in the Try...Catch...Finally structure, after catching all the specific exceptions you anticipate. Control flow can never reach a Catch block that follows a Catch without an exception argument.
In partial-trust situations, such as an application hosted on a network share, Try...Catch...Finally does not catch security exceptions that occur before the method containing the call is invoked. The following example, when placed on a server share and run from there, produces the error "System.Security.SecurityException: Request Failed." For more information on security exceptions, see the SecurityException class.
|
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Try
Process.Start("http://www.microsoft.com")
Catch ex As Exception
MsgBox("Can't load Web page" & vbCrLf & ex.Message)
End Try
End Sub
|
In such a partial-trust situation, you need to put the Process.Start statement in a separate Sub. The initial call to the Sub will fail, allowing Try...Catch to catch it before the Sub containing Process.Start is launched and the security exception produced.
Note |
|---|
| If a Try statement does not contain at least one Catch block, it must contain a Finally block. |