mirror of
https://github.com/codeguy/php-the-right-way.git
synced 2025-08-17 19:16:20 +02:00
Merge branch 'errors-exceptions' of github.com:aranw/php-the-right-way into aranw-errors-exceptions
This commit is contained in:
@@ -4,8 +4,52 @@ isChild: true
|
||||
|
||||
## Errors {#errors_title}
|
||||
|
||||
PHP has several levels of error severity. The three most common types of messages are errors, notices and warnings. These have different levels of severity; `E_ERROR`, `E_NOTICE`, and `E_WARNING`. Errors are fatal run-time errors and are usually caused by faults in your code and need to be fixed as they'll cause PHP to stop executing. Warnings are non-fatal errors, execution of the script will not be halted. Notices are advisory messages caused by code that may or may not cause problems during the execution of the script, execution is not halted.
|
||||
PHP Errors differ to Exceptions in that they, Errors can halt the execution of your script depending on the level of
|
||||
severity. Exceptions on the other hand can be caught using `try catch` statements.
|
||||
|
||||
Another type of error message reported at compile time is the `E_STRICT` message, these messages are used to suggest changes to your code to help ensure best interoperability and forward compatibility for your code.
|
||||
### Error Severity
|
||||
|
||||
PHP's built in error reporting and logging, allows for different levels of reporting via the use of Predefined
|
||||
Constants. The three main constants are `E_ERROR`, `E_NOTICE`, and `E_WARNING`.
|
||||
|
||||
The different levels of error severity have different meanings. The three most common types of messages are Errors,
|
||||
Notices and Warnings. Errors are fatal run-time Errors and are usually caused by faults in your code and need to be
|
||||
fixed as they'll cause execution to be halted. Warnings are non-fatal errors, execution of the script will continue
|
||||
and dependant on settings the user may or not may see the Warning message. Notices are advisory messages caused by
|
||||
code that may or may not cause problems during script execution, execution is not halted and again depending on
|
||||
settings the user may or not see the Notice message.
|
||||
|
||||
Another type of Error Message reported at compile time are `E_STRICT` messages, these messages are used to suggest
|
||||
changes to your code to help ensure best interoperability and forward compatibility for your code.
|
||||
|
||||
### Changing PHP's Error Reporting Behaviour
|
||||
|
||||
Error Reporting can both be changed using PHP settings and PHP function calls. Using the built in PHP function
|
||||
`error_reporting()` you can set the level of errors for the duration of the script execution by passing one of the
|
||||
Predefined Constants. For more information on this relating to application environments check
|
||||
out the [Error Reporting][errorreport].
|
||||
|
||||
As well as setting the level of error reporting during script execution you can also suppress Errors using the
|
||||
Error Control Operator `@` by putting this operator at the beginning an expression. The use of this operator
|
||||
is not advised and should never be used, using this operator is like admitting your code is bad and can fail over
|
||||
|
||||
* [Error Control Operators](http://php.net/manual/en/language.operators.errorcontrol.php)
|
||||
|
||||
### Error Exceptions
|
||||
|
||||
Optionally you can throw your Errors as Exceptions using the `ErrorException` class, this class extends the `Exception`
|
||||
class. This is a common practice and by passing errors off as Exceptions in development you can handle them better than
|
||||
the usual result. By passing these Errors as Exceptions and not trying to catch them in Development the hope is that
|
||||
you'll catch the Error and hopefully this will allow you to deal with the issue before it becomes a problem in a
|
||||
Production Environment.
|
||||
More information on this and details on how to use `ErrorException` with Error Handling can be found at
|
||||
[ErrorException Class][errorexception].
|
||||
|
||||
* [Error Control Operators](http://php.net/manual/en/language.operators.errorcontrol.php)
|
||||
* [Predefined Constants for Error Handling](http://www.php.net/manual/en/errorfunc.constants.php)
|
||||
* [error_reporting](http://www.php.net/manual/en/function.error-reporting.php)
|
||||
* [ErrorException Class][errorexception]
|
||||
* [Reporting][errorreport]
|
||||
|
||||
[errorexception]: http://php.net/manual/en/class.errorexception.php
|
||||
[errorreport]: /#error_reporting
|
||||
|
Reference in New Issue
Block a user