Files
Umbraco-CMS/umbraco/datalayer/UmbracoException.cs
Shandem f6d0d043b5 DO NOT DOWNLOAD. DOWNLOAT LATEST STABLE FROM RELEASE TAB
Created 4.1.0 branch

[TFS Changeset #55082]
2009-06-19 07:39:16 +00:00

110 lines
3.6 KiB
C#

/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using System;
using System.Diagnostics;
using System.Reflection;
namespace umbraco
{
/// <summary>
/// Represents an exception that is generated in an Umbraco module.
/// </summary>
/// <remarks>This should be moved out of the data layer for general use.</remarks>
public class UmbracoException : Exception
{
#region Private Fields
/// <summary>The Umbraco component that generated the exception.</summary>
private readonly UmbracoComponent m_Component;
#endregion
#region Public Properties
/// <summary>
/// Gets the Umbraco component that generated the exception.
/// </summary>
/// <value>The component.</value>
public UmbracoComponent Component
{
get { return m_Component; }
}
/// <summary>
/// Gets a message that describes the current exception.
/// </summary>
/// <value>The error message that explains the reason for the exception.</value>
public override string Message
{
get
{
return String.Format("Umbraco Exception ({0}): {1}", Component, base.Message);
}
}
#endregion
#region Public Constructors
/// <summary>
/// Initializes a new instance of the <see cref="UmbracoException"/> class.
/// </summary>
/// <param name="message">The message.</param>
public UmbracoException(string message)
: this(message, null)
{ }
/// <summary>
/// Initializes a new instance of the <see cref="UmbracoException"/> class.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="innerException">The inner exception.</param>
public UmbracoException(string message, Exception innerException)
: base(message, innerException)
{
// get the calling assembly
Assembly assembly = new StackFrame(1).GetMethod().ReflectedType.Assembly;
string assemblyName = assembly.FullName.Split(",".ToCharArray())[0];
// try to determine the component
try
{
string componentName = assemblyName.ToLower().Replace("umbraco.", String.Empty);
m_Component = (UmbracoComponent)Enum.Parse(typeof(UmbracoComponent), componentName, true);
}
// do nothing if parsing fails, default value is UmbracoComponent.External
catch (ArgumentException) { }
}
#endregion
}
/// <summary>
/// Enum of all Umbraco components
/// </summary>
public enum UmbracoComponent
{
/// <summary>Unknown component</summary>
External,
/// <summary>Business logic component</summary>
BusinessLogic,
/// <summary>CMS component</summary>
CMS,
/// <summary>Controls component</summary>
Controls,
/// <summary>Data layer component</summary>
DataLayer,
/// <summary>Editor controls component</summary>
EditorControls,
/// <summary>Presentation component</summary>
Presentation,
/// <summary>Providers component</summary>
Providers
}
}