Team Ai
Datasetpublic

MegaBites-AI/Windows-powershell

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes372downloads
MshSnapinLoadException.cs184 linesDownload Raw Back to config
1// Copyright (c) Microsoft Corporation.2// Licensed under the MIT License.3 4using System.Reflection;5using System.Runtime.Serialization;6using System.Security.Permissions;7 8namespace System.Management.Automation.Runspaces9{10    /// <summary>11    /// Defines exception thrown when a PSSnapin was not able to load into current runspace.12    /// </summary>13    /// <!--14    /// Implementation of PSSnapInException requires it to15    ///     1. Implement IContainsErrorRecord,16    ///     2. ISerializable17    ///18    /// Basic information for this exception includes,19    ///     1. PSSnapin name20    ///     2. Inner exception.21    /// -->22    public class PSSnapInException : RuntimeException23    {24        /// <summary>25        /// Initiate an instance of PSSnapInException.26        /// </summary>27        /// <param name="PSSnapin">PSSnapin for the exception.</param>28        /// <param name="message">Message with load failure detail.</param>29        internal PSSnapInException(string PSSnapin, string message)30            : base()31        {32            _PSSnapin = PSSnapin;33            _reason = message;34            CreateErrorRecord();35        }36 37        /// <summary>38        /// Initiate an instance of PSSnapInException.39        /// </summary>40        /// <param name="PSSnapin">PSSnapin for the exception.</param>41        /// <param name="message">Message with load failure detail.</param>42        /// <param name="warning">Whether this is just a warning for PSSnapin load.</param>43        internal PSSnapInException(string PSSnapin, string message, bool warning)44            : base()45        {46            _PSSnapin = PSSnapin;47            _reason = message;48            _warning = warning;49            CreateErrorRecord();50        }51 52        /// <summary>53        /// Initiate an instance of PSSnapInException.54        /// </summary>55        /// <param name="PSSnapin">PSSnapin for the exception.</param>56        /// <param name="message">Message with load failure detail.</param>57        /// <param name="exception">Exception for PSSnapin load failure.</param>58        internal PSSnapInException(string PSSnapin, string message, Exception exception)59            : base(message, exception)60        {61            _PSSnapin = PSSnapin;62            _reason = message;63            CreateErrorRecord();64        }65 66        /// <summary>67        /// Initiate an instance of PSSnapInException.68        /// </summary>69        public PSSnapInException() : base()70        {71        }72 73        /// <summary>74        /// Initiate an instance of PSSnapInException.75        /// </summary>76        /// <param name="message">Error message.</param>77        public PSSnapInException(string message)78            : base(message)79        {80        }81 82        /// <summary>83        /// Initiate an instance of PSSnapInException.84        /// </summary>85        /// <param name="message">Error message.</param>86        /// <param name="innerException">Inner exception.</param>87        public PSSnapInException(string message, Exception innerException)88            : base(message, innerException)89        {90        }91 92        /// <summary>93        /// Create the internal error record.94        /// The ErrorRecord created will be stored in the _errorRecord member.95        /// </summary>96        private void CreateErrorRecord()97        {98            // if _PSSnapin or _reason is empty, this exception is created using default99            // constructor. Don't create the error record since there is100            // no useful information anyway.101            if (!string.IsNullOrEmpty(_PSSnapin) && !string.IsNullOrEmpty(_reason))102            {103                Assembly currentAssembly = typeof(PSSnapInException).Assembly;104 105                if (_warning)106                {107                    _errorRecord = new ErrorRecord(new ParentContainsErrorRecordException(this), "PSSnapInLoadWarning", ErrorCategory.ResourceUnavailable, null);108                    _errorRecord.ErrorDetails = new ErrorDetails(string.Format(ConsoleInfoErrorStrings.PSSnapInLoadWarning, _PSSnapin, _reason));109                }110                else111                {112                    _errorRecord = new ErrorRecord(new ParentContainsErrorRecordException(this), "PSSnapInLoadFailure", ErrorCategory.ResourceUnavailable, null);113                    _errorRecord.ErrorDetails = new ErrorDetails(string.Format(ConsoleInfoErrorStrings.PSSnapInLoadFailure, _PSSnapin, _reason));114                }115            }116        }117 118        private readonly bool _warning = false;119 120        private ErrorRecord _errorRecord;121        private bool _isErrorRecordOriginallyNull;122 123        /// <summary>124        /// Gets error record embedded in this exception.125        /// </summary>126        /// <!--127        /// This property is required as part of IErrorRecordContainer128        /// interface.129        /// -->130        public override ErrorRecord ErrorRecord131        {132            get133            {134                if (_errorRecord == null)135                {136                    _isErrorRecordOriginallyNull = true;137                    _errorRecord = new ErrorRecord(138                        new ParentContainsErrorRecordException(this),139                        "PSSnapInException",140                        ErrorCategory.NotSpecified,141                        null);142                }143 144                return _errorRecord;145            }146        }147 148        private readonly string _PSSnapin = string.Empty;149        private readonly string _reason = string.Empty;150 151        /// <summary>152        /// Gets message for this exception.153        /// </summary>154        public override string Message155        {156            get157            {158                if (_errorRecord != null && !_isErrorRecordOriginallyNull)159                {160                    return _errorRecord.ToString();161                }162 163                return base.Message;164            }165        }166 167        #region Serialization168 169        /// <summary>170        /// Initiate a PSSnapInException instance.171        /// </summary>172        /// <param name="info">Serialization information.</param>173        /// <param name="context">Streaming context.</param>174        [Obsolete("Legacy serialization support is deprecated since .NET 8", DiagnosticId = "SYSLIB0051")]175        protected PSSnapInException(SerializationInfo info,176                                        StreamingContext context)177        {178            throw new NotSupportedException();179        }180 181        #endregion Serialization182    }183}184