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
Last revisionBoth sides next revision
rfc:non-capturing_catches [2020/04/06 08:37] – ++ maxsemrfc:non-capturing_catches [2020/05/24 17:16] – Closed the voting. danack
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: Accepted
   * 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 14:
     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 24:
     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 36:
     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 58:
 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 =====
Line 63: Line 76:
  
 ===== 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