面试题答案
一键面试在Visual Basic中,可以使用Try...Catch...Finally
块来实现异常处理并确保文件资源正确关闭,同时可以使用日志记录工具来记录详细错误日志。以下是示例代码及说明:
Imports System.IO
Imports System.Diagnostics
Module Module1
Sub Main()
Dim filePath As String = "C:\example.txt"
Dim fileStream As FileStream = Nothing
Try
'打开文件
fileStream = New FileStream(filePath, FileMode.Open, FileAccess.Read)
Dim reader As New StreamReader(fileStream)
'读取文件内容
Dim content As String = reader.ReadToEnd()
Console.WriteLine(content)
Catch ex As FileNotFoundException
'捕获文件未找到异常
LogError("文件未找到", ex)
Catch ex As UnauthorizedAccessException
'捕获权限不足异常
LogError("权限不足", ex)
Catch ex As Exception
'捕获其他异常
LogError("未知错误", ex)
Finally
'确保文件流关闭
If fileStream IsNot Nothing Then
fileStream.Close()
End If
End Try
End Sub
Private Sub LogError(message As String, ex As Exception)
Dim logFilePath As String = "C:\error.log"
Using writer As New StreamWriter(logFilePath, True)
writer.WriteLine($"[{DateTime.Now}] {message}: {ex.Message}")
writer.WriteLine(ex.StackTrace)
writer.WriteLine()
End Using
End Sub
End Module
代码说明:
- 异常处理结构:使用
Try...Catch...Finally
块来捕获和处理异常。Try
块中包含可能引发异常的代码,即文件打开和读取操作。 - 捕获特定异常:使用多个
Catch
块分别捕获FileNotFoundException
(文件未找到)和UnauthorizedAccessException
(权限不足)等特定异常,以便针对性处理。同时有一个通用的Catch
块来捕获其他未预料到的异常。 - 记录错误日志:定义了
LogError
方法,在捕获到异常时调用该方法记录详细错误信息到日志文件。日志文件路径为C:\error.log
,每次记录都会追加到文件末尾。记录的信息包括时间、异常消息和堆栈跟踪。 - 资源关闭:在
Finally
块中,确保FileStream
对象在异常发生或正常执行完毕后都能被正确关闭,防止资源泄漏。即使在Try
块或Catch
块中执行了Return
语句,Finally
块中的代码也会执行。