From d7938fb4278c8b889ce9765a19c06cff9a637c32 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Fri, 7 Apr 2017 08:34:41 -0700 Subject: [PATCH] Merge pull request dotnet/corertdotnet/coreclr#3247 from dotnet/nmirror Merge nmirror to master Signed-off-by: dotnet-bot Commit migrated from https://github.com/dotnet/coreclr/commit/a71a8413995d50b7fc281aae5384847020313111 --- .../shared/System.Private.CoreLib.Shared.projitems | 1 + .../mscorlib/shared/System/IO/FileLoadException.cs | 10 +- .../shared/System/IO/FileNotFoundException.cs | 114 +++++++++++++++++++++ 3 files changed, 120 insertions(+), 5 deletions(-) create mode 100644 src/coreclr/src/mscorlib/shared/System/IO/FileNotFoundException.cs diff --git a/src/coreclr/src/mscorlib/shared/System.Private.CoreLib.Shared.projitems b/src/coreclr/src/mscorlib/shared/System.Private.CoreLib.Shared.projitems index db38ffd..84e7e3d 100644 --- a/src/coreclr/src/mscorlib/shared/System.Private.CoreLib.Shared.projitems +++ b/src/coreclr/src/mscorlib/shared/System.Private.CoreLib.Shared.projitems @@ -190,6 +190,7 @@ + diff --git a/src/coreclr/src/mscorlib/shared/System/IO/FileLoadException.cs b/src/coreclr/src/mscorlib/shared/System/IO/FileLoadException.cs index a4b68a8..b5e197c 100644 --- a/src/coreclr/src/mscorlib/shared/System/IO/FileLoadException.cs +++ b/src/coreclr/src/mscorlib/shared/System/IO/FileLoadException.cs @@ -12,31 +12,31 @@ namespace System.IO public FileLoadException() : base(SR.IO_FileLoad) { - SetErrorCode(__HResults.COR_E_FILELOAD); + HResult = __HResults.COR_E_FILELOAD; } public FileLoadException(string message) : base(message) { - SetErrorCode(__HResults.COR_E_FILELOAD); + HResult = __HResults.COR_E_FILELOAD; } public FileLoadException(string message, Exception inner) : base(message, inner) { - SetErrorCode(__HResults.COR_E_FILELOAD); + HResult = __HResults.COR_E_FILELOAD; } public FileLoadException(string message, string fileName) : base(message) { - SetErrorCode(__HResults.COR_E_FILELOAD); + HResult = __HResults.COR_E_FILELOAD; FileName = fileName; } public FileLoadException(string message, string fileName, Exception inner) : base(message, inner) { - SetErrorCode(__HResults.COR_E_FILELOAD); + HResult = __HResults.COR_E_FILELOAD; FileName = fileName; } diff --git a/src/coreclr/src/mscorlib/shared/System/IO/FileNotFoundException.cs b/src/coreclr/src/mscorlib/shared/System/IO/FileNotFoundException.cs new file mode 100644 index 0000000..5d86b8f --- /dev/null +++ b/src/coreclr/src/mscorlib/shared/System/IO/FileNotFoundException.cs @@ -0,0 +1,114 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Runtime.Serialization; + +namespace System.IO +{ + // Thrown when trying to access a file that doesn't exist on disk. + [Serializable] + public partial class FileNotFoundException : IOException + { + public FileNotFoundException() + : base(SR.IO_FileNotFound) + { + HResult = __HResults.COR_E_FILENOTFOUND; + } + + public FileNotFoundException(string message) + : base(message) + { + HResult = __HResults.COR_E_FILENOTFOUND; + } + + public FileNotFoundException(string message, Exception innerException) + : base(message, innerException) + { + HResult = __HResults.COR_E_FILENOTFOUND; + } + + public FileNotFoundException(string message, string fileName) + : base(message) + { + HResult = __HResults.COR_E_FILENOTFOUND; + FileName = fileName; + } + + public FileNotFoundException(string message, string fileName, Exception innerException) + : base(message, innerException) + { + HResult = __HResults.COR_E_FILENOTFOUND; + FileName = fileName; + } + + public override string Message + { + get + { + SetMessageField(); + return _message; + } + } + + private void SetMessageField() + { + if (_message == null) + { + if ((FileName == null) && + (HResult == System.__HResults.COR_E_EXCEPTION)) + _message = SR.IO_FileNotFound; + + else if (FileName != null) + _message = FileLoadException.FormatFileLoadExceptionMessage(FileName, HResult); + } + } + + public string FileName { get; } + public string FusionLog { get; } + + public override string ToString() + { + string s = GetType().ToString() + ": " + Message; + + if (FileName != null && FileName.Length != 0) + s += Environment.NewLine + SR.Format(SR.IO_FileName_Name, FileName); + + if (InnerException != null) + s = s + " ---> " + InnerException.ToString(); + + if (StackTrace != null) + s += Environment.NewLine + StackTrace; + + if (FusionLog != null) + { + if (s == null) + s = " "; + s += Environment.NewLine; + s += Environment.NewLine; + s += FusionLog; + } + return s; + } + + protected FileNotFoundException(SerializationInfo info, StreamingContext context) + : base(info, context) + { + // Base class constructor will check info != null. + + FileName = info.GetString("FileNotFound_FileName"); + FusionLog = info.GetString("FileNotFound_FusionLog"); + } + + public override void GetObjectData(SerializationInfo info, StreamingContext context) + { + // Serialize data for our base classes. base will verify info != null. + base.GetObjectData(info, context); + + // Serialize data for this class + info.AddValue("FileNotFound_FileName", FileName, typeof(string)); + info.AddValue("FileNotFound_FusionLog", FusionLog, typeof(string)); + } + } +} + -- 2.7.4