rfc:non-capturing_catches

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:non-capturing_catches [2020/04/06 08:37] – ++ maxsemrfc:non-capturing_catches [2020/05/26 14:39] (current) – implemented maxsem
Line 1: Line 1:
-====== PHP RFC: Your Title Here ======+====== PHP RFC: non-capturing catches ======
   * Version: 0.9   * Version: 0.9
   * Date: 2020-04-05   * Date: 2020-04-05
   * Author: Max Semenik <maxsem.wiki@gmail.com>   * Author: Max Semenik <maxsem.wiki@gmail.com>
-  * Status: Draft+  * Status: Implemented in PHP 8.0 
 +  * Implementation: https://github.com/php/php-src/pull/5345
   * First Published at: https://wiki.php.net/rfc/non-capturing_catches   * First Published at: https://wiki.php.net/rfc/non-capturing_catches
  
 ===== Introduction ===== ===== Introduction =====
 Currently, PHP requires to capture the exception being caught to a variable: Currently, PHP requires to capture the exception being caught to a variable:
-<php>+<code php>
 try { try {
     foo();     foo();
Line 14: Line 15:
     die($ex->getMessage());     die($ex->getMessage());
 } }
-</php>+</code> 
 However, you need to specify the variable even if it's not used: However, you need to specify the variable even if it's not used:
-<php>+ 
 +<code php>
 try { try {
     changeImportantData();     changeImportantData();
Line 22: Line 25:
     echo "You don't have permission to do this";     echo "You don't have permission to do this";
 } }
-</php>+</code> 
 Someone reading the above code is left to wonder if the author intended to not use the exception variable or it's a bug. Someone reading the above code is left to wonder if the author intended to not use the exception variable or it's a bug.
  
 ===== Proposal ===== ===== Proposal =====
 Allow catching exceptions without capturing them to variables: Allow catching exceptions without capturing them to variables:
-<php>+<code php>
 try { try {
     changeImportantData();     changeImportantData();
Line 33: Line 37:
     echo "You don't have permission to do this";     echo "You don't have permission to do this";
 } }
-</php>+</code>
  
 ===== Prior art ===== ===== Prior art =====
 +Such change was first proposed in [[https://wiki.php.net/rfc/anonymous_catch|this RFC]] 7 years ago. It was turned down mostly because it also wanted to allow blanket catches like this:
 +<code php>
 +try {
 +    foo();
 +} catch {
 +    bar();
 +}
 +</code>
 +Meanwhile what I'm proposing here has received mostly positive feedback so I feel it's worth revisiting.
  
 ===== Backward Incompatible Changes ===== ===== Backward Incompatible Changes =====
Line 46: Line 59:
 None. None.
  
-===== Open Issues ===== +===== Vote ===== 
-Make sure there are no open issues when the vote starts! +Voting started on 2020-05-10 and will end on 2020-05-24 at 9:00 UTC. 
- +<doodle title="Accept this RFC?" auth="maxsem" voteType="single" closed="true"> 
-===== Proposed Voting Choices ===== +   * Yes 
-Include these so readers know where you are heading and can discuss the proposed voting options.+   * No 
 +</doodle>
  
 ===== Patches and Tests ===== ===== Patches and Tests =====
-* https://github.com/php/php-src/pull/5345 - work in progress+* https://github.com/php/php-src/pull/5345
  
 ===== Implementation ===== ===== Implementation =====
Line 63: Line 77:
  
 ===== References ===== ===== References =====
-Links to external references, discussions or RFCs+* https://externals.io/message/109550 - initial announcements
  
 ===== Rejected Features ===== ===== Rejected Features =====
 Keep this updated with features that were discussed on the mail lists. Keep this updated with features that were discussed on the mail lists.
rfc/non-capturing_catches.txt · Last modified: 2020/05/26 14:39 by maxsem