extending Exception to allow for auto appending class name on exception message
Changing an inherited method signature isn't a good idea. It means how you call a method changes depending on what exact class you're calling.

Exception::__construct has only 3 arguments, but the first of which can be anything. As such you could do:

class DataException extends Exception 
{
   protected $solved;
   protected $howSolved;

   public function __construct($message = null, $code = 0, Exception $previous = null)
    {
    $solved = $howSolved = false;
    if (is_array($message))  {
        $solved = $message['solved']; // message is an array
        ...
        $message = $message['message']; // and now it's a string to be used/compatible with the parent
    }


Which would work whether $message was a string or an array - and without changing the method signature.

Why do you have setters for properties on a exception? Sounds like you're using exceptions for something they aren't designed.