Merge pull request dotnet/corertdotnet/coreclr#3247 from dotnet/nmirror
authorJan Kotas <jkotas@microsoft.com>
Fri, 7 Apr 2017 15:34:41 +0000 (08:34 -0700)
committerJan Kotas <jkotas@microsoft.com>
Fri, 7 Apr 2017 20:37:23 +0000 (13:37 -0700)
Merge nmirror to master

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/a71a8413995d50b7fc281aae5384847020313111

src/coreclr/src/mscorlib/shared/System.Private.CoreLib.Shared.projitems
src/coreclr/src/mscorlib/shared/System/IO/FileLoadException.cs
src/coreclr/src/mscorlib/shared/System/IO/FileNotFoundException.cs [new file with mode: 0644]

index db38ffd..84e7e3d 100644 (file)
     <Compile Include="$(MSBuildThisFileDirectory)System\InvalidTimeZoneException.cs"/>
     <Compile Include="$(MSBuildThisFileDirectory)System\IO\Error.cs"/>
     <Compile Include="$(MSBuildThisFileDirectory)System\IO\FileLoadException.cs"/>
+    <Compile Include="$(MSBuildThisFileDirectory)System\IO\FileNotFoundException.cs"/>
     <Compile Include="$(MSBuildThisFileDirectory)System\IO\FileStream.cs"/>
     <Compile Include="$(MSBuildThisFileDirectory)System\IO\Path.cs"/>
     <Compile Include="$(MSBuildThisFileDirectory)System\IO\PathInternal.cs"/>
index a4b68a8..b5e197c 100644 (file)
@@ -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 (file)
index 0000000..5d86b8f
--- /dev/null
@@ -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));
+        }
+    }
+}
+