/// <summary>
		/// 从内部的异常处理程序树中查找最接近于指定异常对象的处理程序,然后指派该处理程序处理指定的异常对象。
		/// </summary>
		/// <param name="exception">要处理的指定异常对象。</param>
		/// <returns>处理成功则返回真(True),否则返回假(False)。</returns>
		/// <exception cref="ExceptionHandlingException">在异常处理程序树中没有找到合适的异常处理程序。</exception>
		/// <remarks>如果参数<paramref name="exception"/>为空引用(在 Visual Basic 中为 Nothing),则返回真(True)。</remarks>
		public bool Handle(Exception exception)
		{
			if(exception == null)
				return true;

			//声明“Error”事件参数对象
			FailureHandleEventArgs args = null;

			try
			{
				foreach(IExceptionHandler handler in _handlers)
				{
					bool canHandle = handler.CanHandle(exception.GetType());

					if(canHandle)
					{
						//构建“Handling”事件参数对象
						ExceptionHandlingEventArgs handlingArgs = new ExceptionHandlingEventArgs(handler, exception);

						//激发“Handling”事件
						this.OnHandling(handlingArgs);

						//定义异常处理器处理的后续异常对象
						Exception continuedException = null;

						//如果事件处理参数不取消后续处理则执行处理器的异常处理方法
						if(!handlingArgs.Cancel)
							continuedException = handler.Handle(exception);

						//激发“Handled”事件
						this.OnHandled(new ExceptionHandledEventArgs(handler, exception));

						//返回处理成功
						if(continuedException == null)
							return true;
						else
							exception = continuedException;
					}
				}
			}
			catch(Exception ex)
			{
				//构建“Error”事件参数对象
				args = new FailureHandleEventArgs(ex, UnknownError);
			}

			//构建“Error”事件参数对象
			if(args == null)
				args = new FailureHandleEventArgs(exception, UnhandledError);

			//激发“Error”事件
			this.OnError(args);

			//返回事件参数对象的“Handled”属性值
			return args.Handled;
		}
		private void OnError(FailureHandleEventArgs e)
		{
			if(this.Error != null)
				this.Error(this, e);
		}