| File: Microsoft\VisualBasic\CompilerServices\ExceptionUtils.vb | Web Access |
| Project: src\winforms\src\Microsoft.VisualBasic.Forms\src\Microsoft.VisualBasic.Forms.vbproj (Microsoft.VisualBasic.Forms) |
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. Imports System.Runtime.InteropServices Imports System.Threading Namespace Microsoft.VisualBasic.CompilerServices ' Implements error utilities for Basic Friend Module ExceptionUtils ''' <summary> ''' Returns a new instance of <see cref="ArgumentException"/> with the message from resource file and the Exception.ArgumentName property set. ''' </summary> ''' <param name="argumentName">The name of the argument (parameter). Not localized.</param> ''' <param name="resourceKey">The resource ID.</param> ''' <param name="placeHolders">Strings that will replace place holders in the resource string, if any.</param> ''' <returns>A new instance of <see cref="ArgumentException"/>.</returns> ''' <remarks>This is the preferred way to construct an argument exception.</remarks> Friend Function GetArgumentExceptionWithArgName( argumentName As String, resourceKey As String, ParamArray placeHolders() As String) As ArgumentException Return New ArgumentException(GetResourceString(resourceKey, placeHolders), argumentName) End Function ''' <summary> ''' Returns a new instance of <see cref="ArgumentNullException"/> with message: "Argument cannot be Nothing." ''' </summary> ''' <param name="argumentName">The name of the argument (parameter). Not localized.</param> ''' <returns>A new instance of <see cref="ArgumentNullException"/>.</returns> Friend Function GetArgumentNullException(argumentName As String) As ArgumentNullException Return New ArgumentNullException(argumentName, GetResourceString(SR.General_ArgumentNullException)) End Function ''' <summary> ''' Returns a new instance of <see cref="ArgumentNullException"/> with the message from resource file. ''' </summary> ''' <param name="argumentName">The name of the argument (parameter). Not localized.</param> ''' <param name="resourceKey">The resource ID.</param> ''' <param name="placeHolders">Strings that will replace place holders in the resource string, if any.</param> ''' <returns>A new instance of <see cref="ArgumentNullException"/>.</returns> Friend Function GetArgumentNullException( argumentName As String, resourceKey As String, ParamArray placeHolders() As String) As ArgumentNullException Return New ArgumentNullException(argumentName, GetResourceString(resourceKey, placeHolders)) End Function ''' <summary> ''' Returns a new instance of <see cref="IO.DirectoryNotFoundException"/> with the message from resource file. ''' </summary> ''' <param name="resourceKey">The resource ID.</param> ''' <param name="placeHolders">Strings that will replace place holders in the resource string, if any.</param> ''' <returns>A new instance of <see cref="IO.DirectoryNotFoundException"/>.</returns> Friend Function GetDirectoryNotFoundException( resourceKey As String, ParamArray placeHolders() As String) As IO.DirectoryNotFoundException Return New IO.DirectoryNotFoundException(GetResourceString(resourceKey, placeHolders)) End Function ''' <summary> ''' Returns a new instance of <see cref="IO.FileNotFoundException"/> with the message from resource file. ''' </summary> ''' <param name="fileName">The file name (path) of the not found file.</param> ''' <param name="resourceKey">The resource ID.</param> ''' <param name="placeHolders">Strings that will replace place holders in the resource string, if any.</param> ''' <returns>A new instance of <see cref="IO.FileNotFoundException"/>.</returns> Friend Function GetFileNotFoundException( fileName As String, resourceKey As String, ParamArray placeHolders() As String) As IO.FileNotFoundException Return New IO.FileNotFoundException(GetResourceString(resourceKey, placeHolders), fileName) End Function ''' <summary> ''' Returns a new instance of <see cref="InvalidOperationException"/> with the message from resource file. ''' </summary> ''' <param name="resourceKey">The resource ID.</param> ''' <param name="placeHolders">Strings that will replace place holders in the resource string, if any.</param> ''' <returns>A new instance of <see cref="InvalidOperationException"/>.</returns> Friend Function GetInvalidOperationException( resourceKey As String, ParamArray placeHolders() As String) As InvalidOperationException Return New InvalidOperationException(GetResourceString(resourceKey, placeHolders)) End Function ''' <summary> ''' Returns a new instance of <see cref="IO.IOException"/> with the message from resource file. ''' </summary> ''' <param name="resourceKey">The resource ID.</param> ''' <param name="placeHolders">Strings that will replace place holders in the resource string, if any.</param> ''' <returns>A new instance of <see cref="IO.IOException"/>.</returns> Friend Function GetIOException( resourceKey As String, ParamArray placeHolders() As String) As IO.IOException Return New IO.IOException(GetResourceString(resourceKey, placeHolders)) End Function Friend Function GetResourceString( resourceKey As String, ParamArray args() As String) As String Return String.Format(Thread.CurrentThread.CurrentCulture, resourceKey, args) End Function ''' <summary> ''' ''' </summary> ''' <param name="resourceId">A <see cref="VbErrors"/> value that will become the ResourceKey</param> ''' <returns>A <see langword="String"/> localized version of the resource.</returns> Friend Function GetResourceString(resourceId As VbErrors) As String Dim resourceKey As String = $"ID{CStr(resourceId)}" Return SR.GetResourceString(resourceKey, resourceKey) End Function ''' <summary> ''' Returns a new instance of <see cref="ComponentModel.Win32Exception"/> with the message from resource file and the last Win32 error. ''' </summary> ''' <param name="resourceKey">The resource ID.</param> ''' <param name="placeHolders">Strings that will replace place holders in the resource string, if any.</param> ''' <returns>A new instance of <see cref="ComponentModel.Win32Exception"/>.</returns> ''' <remarks>There is no way to exclude the Win32 error so this function will call Marshal.GetLastWin32Error all the time.</remarks> Friend Function GetWin32Exception( resourceKey As String, ParamArray placeHolders() As String) As ComponentModel.Win32Exception Return New ComponentModel.Win32Exception(Marshal.GetLastWin32Error(), GetResourceString(resourceKey, placeHolders)) End Function Friend Function VbMakeException(resourceId As Integer) As Exception Dim description As String = String.Empty If resourceId > 0 AndAlso resourceId <= &HFFFFI Then description = GetResourceString(DirectCast(resourceId, VbErrors)) End If Select Case resourceId Case VbErrors.FileNotFound Return New IO.FileNotFoundException(description) Case VbErrors.PermissionDenied Return New IO.IOException(description) Case Else Return New Exception(description) End Select End Function End Module End Namespace