| File: System\IO\Packaging\FileFormatException.cs | Web Access |
| Project: src\runtime\src\libraries\System.IO.Packaging\src\System.IO.Packaging.csproj (System.IO.Packaging) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.ComponentModel; using System.Runtime.Serialization; namespace System.IO { /// <summary> /// The FileFormatException class is thrown when an input file or a data stream that is supposed to conform /// to a certain file format specification is malformed. /// </summary> [Serializable] [System.Runtime.CompilerServices.TypeForwardedFrom("WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")] public class FileFormatException : FormatException { /// <summary> /// Creates a new instance of FileFormatException class. /// This constructor initializes the Message property of the new instance to a system-supplied message that describes the error, /// such as "An input file or a data stream does not conform to the expected file format specification." /// This message takes into account the current system culture. /// </summary> public FileFormatException() : base(SR.FileFormatException) { } /// <summary> /// Creates a new instance of FileFormatException class. /// This constructor initializes the Message property of the new instance with a specified error message. /// </summary> /// <param name="message">The message that describes the error.</param> public FileFormatException(string? message) : base(message ?? SR.FileFormatException) { } /// <summary> /// Creates a new instance of FileFormatException class. /// This constructor initializes the Message property of the new instance with a specified error message. /// The InnerException property is initialized using the innerException parameter. /// </summary> /// <param name="message">The error message that explains the reason for the exception.</param> /// <param name="innerException">The exception that is the cause of the current exception.</param> public FileFormatException(string? message, Exception? innerException) : base(message ?? SR.FileFormatException, innerException) { } /// <summary> /// Creates a new instance of FileFormatException class. /// This constructor initializes the Message property of the new instance to a system-supplied message that describes the error and includes the file name, /// such as "The file 'sourceUri' does not conform to the expected file format specification." /// This message takes into account the current system culture. /// The SourceUri property is initialized using the sourceUri parameter. /// </summary> /// <param name="sourceUri">The Uri of a file that caused this error.</param> public FileFormatException(Uri? sourceUri) : base( sourceUri == null ? SR.FileFormatException : SR.Format(SR.FileFormatExceptionWithFileName, sourceUri)) { _sourceUri = sourceUri; } /// <summary> /// Creates a new instance of FileFormatException class. /// This constructor initializes the Message property of the new instance using the message parameter. /// The content of message is intended to be understood by humans. /// The caller of this constructor is required to ensure that this string has been localized for the current system culture. /// The SourceUri property is initialized using the sourceUri parameter. /// </summary> /// <param name="sourceUri">The Uri of a file that caused this error.</param> /// <param name="message">The message that describes the error.</param> public FileFormatException(Uri? sourceUri, string? message) : base(message ?? SR.FileFormatException) { _sourceUri = sourceUri; } /// <summary> /// Creates a new instance of FileFormatException class. /// This constructor initializes the Message property of the new instance to a system-supplied message that describes the error and includes the file name, /// such as "The file 'sourceUri' does not conform to the expected file format specification." /// This message takes into account the current system culture. /// The SourceUri property is initialized using the sourceUri parameter. /// The InnerException property is initialized using the innerException parameter. /// </summary> /// <param name="sourceUri">The Uri of a file that caused this error.</param> /// <param name="innerException">The exception that is the cause of the current exception.</param> public FileFormatException(Uri? sourceUri, Exception? innerException) : base( sourceUri == null ? SR.FileFormatException : SR.Format(SR.FileFormatExceptionWithFileName, sourceUri), innerException) { _sourceUri = sourceUri; } /// <summary> /// Creates a new instance of FileFormatException class. /// This constructor initializes the Message property of the new instance using the message parameter. /// The content of message is intended to be understood by humans. /// The caller of this constructor is required to ensure that this string has been localized for the current system culture. /// The SourceUri property is initialized using the sourceUri parameter. /// The InnerException property is initialized using the innerException parameter. /// </summary> /// <param name="sourceUri">The Uri of a file that caused this error.</param> /// <param name="message">The message that describes the error.</param> /// <param name="innerException">The exception that is the cause of the current exception.</param> public FileFormatException(Uri? sourceUri, string? message, Exception? innerException) : base(message ?? SR.FileFormatException, innerException) { _sourceUri = sourceUri; } #if NET [Obsolete(Obsoletions.LegacyFormatterImplMessage, DiagnosticId = Obsoletions.LegacyFormatterImplDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] [EditorBrowsable(EditorBrowsableState.Never)] #endif protected FileFormatException(SerializationInfo info, StreamingContext context) : base(info, context) { string? sourceUriString = info.GetString("SourceUri"); if (sourceUriString != null) _sourceUri = new Uri(sourceUriString, UriKind.RelativeOrAbsolute); } /// <summary> /// Sets the SerializationInfo object with the file name and additional exception information. /// </summary> /// <param name="info">The object that holds the serialized object data.</param> /// <param name="context">The contextual information about the source or destination.</param> #if NET [Obsolete(Obsoletions.LegacyFormatterImplMessage, DiagnosticId = Obsoletions.LegacyFormatterImplDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] [EditorBrowsable(EditorBrowsableState.Never)] #endif public override void GetObjectData(SerializationInfo info, StreamingContext context) { base.GetObjectData(info, context); info.AddValue("SourceUri", SourceUri?.GetComponents(UriComponents.SerializationInfoString, UriFormat.SafeUnescaped), typeof(string)); } /// <summary> /// Returns the name of a file that caused this exception. This property may be equal to an empty string /// if obtaining the file path that caused the error was not possible. /// </summary> /// <value>The file name.</value> /// <SecurityNote> /// Critical : Calls critical Demand for path discovery /// Safe : Path which could be leaked by an exception is already known to caller since it is supplied by the caller /// </SecurityNote> public Uri? SourceUri { get { return _sourceUri; } } private readonly Uri? _sourceUri; } }