rfc:non-capturing_catches
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision Last revision Both sides next revision | ||
rfc:non-capturing_catches [2020/04/05 19:58] maxsem created |
rfc:non-capturing_catches [2020/05/24 17:16] danack Closed the voting. |
||
---|---|---|---|
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 < | * Author: Max Semenik < | ||
- | * Status: | + | * Status: |
* First Published at: https:// | * First Published at: https:// | ||
- | |||
===== Introduction ===== | ===== Introduction ===== | ||
- | The elevator pitch for the RFC. The first paragraph of this section will be slightly larger | + | Currently, PHP requires to capture |
+ | <code php> | ||
+ | try { | ||
+ | foo(); | ||
+ | } catch (SomeException $ex) { | ||
+ | die($ex-> | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | However, you need to specify the variable even if it's not used: | ||
+ | |||
+ | <code php> | ||
+ | try { | ||
+ | changeImportantData(); | ||
+ | } catch (PermissionException $ex) { | ||
+ | echo "You don't have permission to do this"; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Someone reading the above code is left to wonder if the author intended to not use the exception variable or it' | ||
===== Proposal ===== | ===== Proposal ===== | ||
+ | Allow catching exceptions without capturing them to variables: | ||
+ | <code php> | ||
+ | try { | ||
+ | changeImportantData(); | ||
+ | } catch (PermissionException) { // The intention is clear: exception details are irrelevant | ||
+ | echo "You don't have permission to do this"; | ||
+ | } | ||
+ | </ | ||
===== Prior art ===== | ===== Prior art ===== | ||
+ | Such change was first proposed in [[https:// | ||
+ | <code php> | ||
+ | try { | ||
+ | foo(); | ||
+ | } catch { | ||
+ | bar(); | ||
+ | } | ||
+ | </ | ||
+ | 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 23: | 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=" | |
- | ===== Proposed Voting Choices ===== | + | * Yes |
- | Include these so readers know where you are heading and can discuss the proposed voting options. | + | * No |
+ | </ | ||
===== Patches and Tests ===== | ===== Patches and Tests ===== | ||
Line 40: | Line 76: | ||
===== References ===== | ===== References ===== | ||
- | Links to external references, discussions or RFCs | + | * https:// |
===== 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