rfc:engine_exceptions
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
rfc:engine_exceptions [2013/12/07 12:39] – nikic | rfc:engine_exceptions [2013/12/10 13:52] – Fix numbers (this is about engine, but I've been using total counts) nikic | ||
---|---|---|---|
Line 2: | Line 2: | ||
* Date: 2013-10-23 | * Date: 2013-10-23 | ||
* Author: Nikita Popov < | * Author: Nikita Popov < | ||
- | * Status: | + | * Status: |
* Proposed for: PHP 5.6 | * Proposed for: PHP 5.6 | ||
* Patch: https:// | * Patch: https:// | ||
Line 11: | Line 11: | ||
This RFC proposes to allow the use of exceptions in the engine and to allow the replacement of existing fatal or recoverable fatal errors with exceptions. | This RFC proposes to allow the use of exceptions in the engine and to allow the replacement of existing fatal or recoverable fatal errors with exceptions. | ||
- | As an example of this change, consider | + | As an example of this change, consider the following code-snippet: |
<code php> | <code php> | ||
Line 124: | Line 124: | ||
<code php> | <code php> | ||
- | $lock->aquire(); | + | $lock->acquire(); |
try { | try { | ||
doSomething(); | doSomething(); | ||
Line 143: | Line 143: | ||
public function __construct(Lock $lock) { | public function __construct(Lock $lock) { | ||
$this-> | $this-> | ||
- | $this-> | + | $this-> |
} | } | ||
public function __destruct() { | public function __destruct() { | ||
Line 151: | Line 151: | ||
function test($lock) { | function test($lock) { | ||
- | $manager = new LockManager($lock); | + | $manager = new LockManager($lock); |
| | ||
doSomething(); | doSomething(); | ||
Line 309: | Line 309: | ||
==== Not all errors converted ==== | ==== Not all errors converted ==== | ||
- | PHP currently (master on 2013-10-24) contains the following number of fatal-y errors: | + | The Zend Engine |
< | < | ||
- | E_ERROR: | + | E_ERROR: |
- | E_CORE_ERROR: | + | E_CORE_ERROR: |
- | E_COMPILE_ERROR: | + | E_COMPILE_ERROR: |
E_PARSE: | E_PARSE: | ||
- | E_RECOVERABLE_ERROR: | + | E_RECOVERABLE_ERROR: |
</ | </ | ||
- | The patch attached to the RFC currently | + | The count was obtained using '' |
- | Some errors are easy to change to exceptions, others are more complicated. Some are nigh impossible, like the memory limit or execution time limit errors. The '' | + | The patch attached to the RFC currently (as of 2013-10-24) removes 70 '' |
+ | |||
+ | Some errors are easy to change to exceptions, others are more complicated. Some are impossible, like the memory limit or execution time limit errors. The '' | ||
Converting most existing errors will take some time and in the meantime we'll be in a situation where some part of the errors were converted to exceptions but another part stays fatal. From a user perspective it may not be immediately clear when one is used over the other. | Converting most existing errors will take some time and in the meantime we'll be in a situation where some part of the errors were converted to exceptions but another part stays fatal. From a user perspective it may not be immediately clear when one is used over the other. | ||
Line 329: | Line 331: | ||
===== Backwards compatibility ===== | ===== Backwards compatibility ===== | ||
- | The '' | + | The '' |
- | The '' | + | The '' |
===== Patch ===== | ===== Patch ===== | ||
Line 353: | Line 355: | ||
</ | </ | ||
- | Vote started on 2013-12-07. | + | Vote started on 2013-12-07 |
rfc/engine_exceptions.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1