// Copyright (C) Stichting Deltares 2017. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.Runtime.Serialization; using Ringtoets.Piping.IO.SoilProfile; using Ringtoets.Piping.Primitives; namespace Ringtoets.Piping.IO.Exceptions { /// /// Exception thrown when something went wrong while reading in . /// [Serializable] public sealed class PipingSoilProfileReadException : Exception { private const string profileNameKey = nameof(ProfileName); /// /// Initializes a new instance of the class. /// public PipingSoilProfileReadException() {} /// /// Initializes a new instance of the class /// with a specified error message. /// /// The error message that explains the reason for the exception. public PipingSoilProfileReadException(string message) : base(message) {} /// /// Initializes a new instance of the class /// with a specified error message. /// /// The message that describes the error. /// The name of the profile for which this exception was thrown. public PipingSoilProfileReadException(string message, string profileName) : base(message) { ProfileName = profileName; } /// /// Initializes a new instance of the class /// with a specified error message. /// /// The error message that explains the reason for the exception. /// The exception that is the cause of the current exception, /// or null if no inner exception is specified. public PipingSoilProfileReadException(string message, Exception inner) : base(message, inner) {} /// /// Initializes a new instance of the class with a specified error message /// and a reference to the inner exception that is the cause of this exception. /// /// The error message that explains the reason for the exception. /// The name of the profile for which this exception was thrown. /// The exception that is the cause of the current exception, /// or null if no inner exception is specified. public PipingSoilProfileReadException(string message, string profileName, Exception innerException) : base(message, innerException) { ProfileName = profileName; } /// /// Initializes a new instance of with /// serialized data. /// The that holds the serialized /// object data about the exception being thrown. /// The that contains contextual /// information about the source or destination. /// The parameter is /// null. /// The class name is null or /// is zero (0). private PipingSoilProfileReadException(SerializationInfo info, StreamingContext context) : base(info, context) { ProfileName = info.GetString(profileNameKey); } /// /// The name of the profile for which this exception was thrown. /// public string ProfileName { get { return (string) Data[profileNameKey]; } private set { Data[profileNameKey] = value; } } public override void GetObjectData(SerializationInfo info, StreamingContext context) { base.GetObjectData(info, context); info.AddValue(profileNameKey, ProfileName); } } }