Jump to content

More opinions for handling errors/exceptions in programs


Recommended Posts

I have been researching through ways to efficiently handle php exceptions like database connection lost, web service not available etc.

 

I have came up with some ways to handle error in application:

 

1) A global exception class

 

class GlobalException extends Exception {

   public $mErrors; // instance of GlobalErrors

 

    function __construct(GlobalErrors $errors) {

        $this->mErrors = $errors;

    }

}

 

class GlobalErrors {

   public $mErrors;

   

   public function Push($errcode, $errmsg) {

       $err['ErrorCode'] = $errcode;

        $err['ErrorMsg'] = $errmsg;

   }

}

 

// for instance when I validating a form, I would use a function to validate and create a new GlobalErrors and push all error code like "EMPTY_FNAME" or "PASSWORD_CONFIRM_INCORRECT". And at the form itself, I would print out appropriate error message out for each error.

 

eg:

function Validate($pw, $confirm) {

  $errors = new GlobalErrors();

 

  if($pw !== $confirm) {

        $errors->Push("PASSWORD_CONFIRM_INCORRECT", "");

  } 

 

  if(count($errors->mErrors) > 0) {

        throw new GlobalException($errors);

  }

}

 

 

Another approach is:

 

2) Return error message from routine

 

function dbQuery($sql) {

    ...

    ...

    ...

 

    //assume there is error

    return $errCode;

 

}

 

//on the calling function

 

$return = dbQuery("SELECT ...");

if(is_integer($return)) {

    //return another error code

}

 

 

These are two on my approaches I used when handling errors for large PHP projects. I really appreciate the first method I used as I inherited the coding method from my Java programming. However, for some straightforward cases of error handling, the first one often add extra codes. As for second one, it is simple but it can produce complex code if procedures gets complicated.

 

Anyone out there, mind to share with me the ways of you people handling exceptions in sophisticated PHP projects?

 

Thank you,

Kevin

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.