Index: wp-includes/class-wp-error.php
===================================================================
--- wp-includes/class-wp-error.php	(revision 17501)
+++ wp-includes/class-wp-error.php	(working copy)
@@ -18,24 +18,22 @@
  * @package WordPress
  * @since 2.1.0
  */
-class WP_Error {
+class WP_Error extends Exception {
 	/**
 	 * Stores the list of errors.
 	 *
 	 * @since 2.1.0
 	 * @var array
-	 * @access private
 	 */
-	var $errors = array();
+	private $errors = array();
 
 	/**
 	 * Stores the list of data for error codes.
 	 *
 	 * @since 2.1.0
 	 * @var array
-	 * @access private
 	 */
-	var $error_data = array();
+	private $error_data = array();
 
 	/**
 	 * PHP4 Constructor - Sets up error message.
@@ -52,27 +50,24 @@
 	 * @param string|int $code Error code
 	 * @param string $message Error message
 	 * @param mixed $data Optional. Error data.
-	 * @return WP_Error
+	 * @throws WP_Exception on missing code
 	 */
-	function WP_Error($code = '', $message = '', $data = '') {
+	public function __construct($code = '', $message = '', $data = '') {
 		if ( empty($code) )
-			return;
+			throw new WP_Error( '', 'Code parameter is missing.' );
 
-		$this->errors[$code][] = $message;
-
-		if ( ! empty($data) )
-			$this->error_data[$code] = $data;
+		parent::__construct( $message );
+		$this->add( $code, $message, $data );		
 	}
 
 	/**
 	 * Retrieve all error codes.
 	 *
 	 * @since 2.1.0
-	 * @access public
 	 *
 	 * @return array List of error codes, if avaiable.
 	 */
-	function get_error_codes() {
+	public function get_error_codes() {
 		if ( empty($this->errors) )
 			return array();
 
@@ -83,11 +78,10 @@
 	 * Retrieve first error code available.
 	 *
 	 * @since 2.1.0
-	 * @access public
 	 *
 	 * @return string|int Empty string, if no error codes.
 	 */
-	function get_error_code() {
+	public function get_error_code() {
 		$codes = $this->get_error_codes();
 
 		if ( empty($codes) )
@@ -104,7 +98,7 @@
 	 * @param string|int $code Optional. Retrieve messages matching code, if exists.
 	 * @return array Error strings on success, or empty array on failure (if using codee parameter).
 	 */
-	function get_error_messages($code = '') {
+	public function get_error_messages($code = '') {
 		// Return all messages if no code specified.
 		if ( empty($code) ) {
 			$all_messages = array();
@@ -131,7 +125,7 @@
 	 * @param string|int $code Optional. Error code to retrieve message.
 	 * @return string
 	 */
-	function get_error_message($code = '') {
+	public function get_error_message($code = '') {
 		if ( empty($code) )
 			$code = $this->get_error_code();
 		$messages = $this->get_error_messages($code);
@@ -148,7 +142,7 @@
 	 * @param string|int $code Optional. Error code.
 	 * @return mixed Null, if no errors.
 	 */
-	function get_error_data($code = '') {
+	public function get_error_data($code = '') {
 		if ( empty($code) )
 			$code = $this->get_error_code();
 
@@ -161,13 +155,12 @@
 	 * Append more error messages to list of error messages.
 	 *
 	 * @since 2.1.0
-	 * @access public
 	 *
 	 * @param string|int $code Error code.
 	 * @param string $message Error message.
 	 * @param mixed $data Optional. Error data.
 	 */
-	function add($code, $message, $data = '') {
+	public function add($code, $message, $data = '') {
 		$this->errors[$code][] = $message;
 		if ( ! empty($data) )
 			$this->error_data[$code] = $data;
@@ -183,7 +176,7 @@
 	 * @param mixed $data Error data.
 	 * @param string|int $code Error code.
 	 */
-	function add_data($data, $code = '') {
+	public function add_data($data, $code = '') {
 		if ( empty($code) )
 			$code = $this->get_error_code();
 
