//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//------------------------------------------------------------------------------
/*
*/
namespace System.ComponentModel {
using Microsoft.Win32;
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Security.Permissions;
///
/// Specifies an exception that is handled as a warning instead of an error.
///
[HostProtection(SharedState = true)]
[Serializable]
public class WarningException : SystemException {
private readonly string helpUrl;
private readonly string helpTopic;
///
/// Initializes a new instance of the class with the last Win32 error
/// that occured.
///
public WarningException() : this(null, null, null) {
}
///
/// Initializes a new instance of the class with
/// the specified message and no Help file.
///
public WarningException(string message) : this(message, null, null) {
}
///
/// Initializes a new instance of the class with
/// the specified message, and with access to the specified Help file.
///
public WarningException(string message, string helpUrl) : this(message, helpUrl, null) {
}
///
/// Initializes a new instance of the Exception class with a specified error message and a
/// reference to the inner exception that is the cause of this exception.
/// FxCop CA1032: Multiple constructors are required to correctly implement a custom exception.
///
public WarningException( string message, Exception innerException )
: base(message, innerException) {
}
///
/// Initializes a new instance of the class with the
/// specified message, and with access to the specified Help file and topic.
///
public WarningException(string message, string helpUrl, string helpTopic)
: base(message) {
this.helpUrl = helpUrl;
this.helpTopic = helpTopic;
}
///
/// Need this constructor since Exception implements ISerializable.
///
protected WarningException(SerializationInfo info, StreamingContext context) : base (info, context) {
helpUrl = (string) info.GetValue("helpUrl", typeof(string));
helpTopic = (string) info.GetValue("helpTopic", typeof(string));
}
///
/// Specifies the Help file associated with the
/// warning. This field is read-only.
///
public string HelpUrl {
get {
return helpUrl;
}
}
///
/// Specifies the
/// Help topic associated with the warning. This field is read-only.
///
public string HelpTopic {
get {
return helpTopic;
}
}
///
/// Need this since Exception implements ISerializable and we have fields to save out.
///
[SecurityPermission(SecurityAction.Demand, SerializationFormatter=true)]
public override void GetObjectData(SerializationInfo info, StreamingContext context) {
if (info == null) {
throw new ArgumentNullException("info");
}
info.AddValue("helpUrl", helpUrl);
info.AddValue("helpTopic", helpTopic);
base.GetObjectData(info, context);
}
}
}