mirror of
https://github.com/aphrody-labs/PowerShell.git
synced 2026-10-20 14:14:53 +00:00
152 lines
5.1 KiB
C#
152 lines
5.1 KiB
C#
/********************************************************************++
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
--********************************************************************/
|
|
|
|
#pragma warning disable 1634, 1691
|
|
#pragma warning disable 56506
|
|
|
|
using System;
|
|
using System.Management.Automation;
|
|
using System.Runtime.Serialization;
|
|
using System.Reflection;
|
|
|
|
#if CORECLR
|
|
// Use stub for SerializableAttribute, SerializationInfo and ISerializable related types.
|
|
using Microsoft.PowerShell.CoreClr.Stubs;
|
|
#else
|
|
using System.Security.Permissions;
|
|
#endif
|
|
|
|
namespace Microsoft.PowerShell.Commands
|
|
{
|
|
/// <summary>
|
|
/// The exception that is thrown when there is no help category matching
|
|
/// a specific input string.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class HelpCategoryInvalidException : ArgumentException, IContainsErrorRecord
|
|
{
|
|
/// <summary>
|
|
/// Initializes a new instance of the HelpCategoryInvalidException class.
|
|
/// </summary>
|
|
/// <param name="helpCategory">The name of help category that is invalid.</param>
|
|
public HelpCategoryInvalidException(string helpCategory) : base()
|
|
{
|
|
_helpCategory = helpCategory;
|
|
CreateErrorRecord();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the HelpCategoryInvalidException class.
|
|
/// </summary>
|
|
public HelpCategoryInvalidException() : base()
|
|
{
|
|
CreateErrorRecord();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the HelpCategoryInvalidException class.
|
|
/// </summary>
|
|
/// <param name="helpCategory">The name of help category that is invalid.</param>
|
|
/// <param name="innerException">The inner exception of this exception</param>
|
|
public HelpCategoryInvalidException(string helpCategory, Exception innerException) :
|
|
base((innerException != null) ? innerException.Message : string.Empty, innerException)
|
|
{
|
|
_helpCategory = helpCategory;
|
|
CreateErrorRecord();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates an internal error record based on helpCategory.
|
|
/// </summary>
|
|
private void CreateErrorRecord()
|
|
{
|
|
_errorRecord = new ErrorRecord(new ParentContainsErrorRecordException(this), "HelpCategoryInvalid", ErrorCategory.InvalidArgument, null);
|
|
_errorRecord.ErrorDetails = new ErrorDetails(typeof(HelpCategoryInvalidException).GetTypeInfo().Assembly, "HelpErrors", "HelpCategoryInvalid", _helpCategory);
|
|
}
|
|
|
|
private ErrorRecord _errorRecord;
|
|
|
|
/// <summary>
|
|
/// Gets ErrorRecord embedded in this exception.
|
|
/// </summary>
|
|
/// <value>ErrorRecord instance</value>
|
|
public ErrorRecord ErrorRecord
|
|
{
|
|
get
|
|
{
|
|
return _errorRecord;
|
|
}
|
|
}
|
|
|
|
private string _helpCategory = System.Management.Automation.HelpCategory.None.ToString();
|
|
|
|
/// <summary>
|
|
/// Gets name of the help category that is invalid.
|
|
/// </summary>
|
|
/// <value>Name of the help category.</value>
|
|
public string HelpCategory
|
|
{
|
|
get
|
|
{
|
|
return _helpCategory;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets exception message for this exception.
|
|
/// </summary>
|
|
/// <value>Error message.</value>
|
|
public override string Message
|
|
{
|
|
get
|
|
{
|
|
if (_errorRecord != null)
|
|
{
|
|
return _errorRecord.ToString();
|
|
}
|
|
|
|
return base.Message;
|
|
}
|
|
}
|
|
#if !CORECLR
|
|
#region Serialization
|
|
/// <summary>
|
|
/// Initializes a new instance of the HelpCategoryInvalidException class.
|
|
/// </summary>
|
|
/// <param name="info">Serialization information.</param>
|
|
/// <param name="context">Streaming context.</param>
|
|
protected HelpCategoryInvalidException(SerializationInfo info,
|
|
StreamingContext context)
|
|
: base(info, context)
|
|
{
|
|
_helpCategory = info.GetString("HelpCategory");
|
|
CreateErrorRecord();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Populates a <see cref="System.Runtime.Serialization.SerializationInfo"/> with the
|
|
/// data needed to serialize the HelpCategoryInvalidException object.
|
|
/// </summary>
|
|
/// <param name="info">The <see cref="System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
|
|
/// <param name="context">The destination for this serialization.</param>
|
|
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
|
|
public override void GetObjectData(SerializationInfo info, StreamingContext context)
|
|
{
|
|
if (info == null)
|
|
{
|
|
throw PSTraceSource.NewArgumentNullException("info");
|
|
}
|
|
|
|
base.GetObjectData(info, context);
|
|
|
|
info.AddValue("HelpCategory", this._helpCategory);
|
|
}
|
|
|
|
#endregion Serialization
|
|
#endif
|
|
}
|
|
}
|
|
|
|
#pragma warning restore 56506
|