GeezerVison is showing github.com — Fix ErrorActionPreference not being respected from throw site when reset in finally block by rjmholt · Pull Request #15833 · PowerShell/PowerShell
Conversation
PR Summary
Fixes #15726.
When an error is thrown due to $ErrorActionPreference = 'Stop', we now mark it at the first opportunity to prevent having the action preference re-interpreted at a later stage (so that a finally block changing the value won't cause the error to be quietly downgraded).
Labelled as a breaking change because the existing behaviour is observable, but I think is a bucket-3 corner case behaviour that users would experience as a bug. Of note is that ordinary errors written with the WriteError() API will exhibit the correct behaviour, and this change just ensures that all other errors behave the same way.
PR Context
PR Checklist
- PR has a meaningful title
- Use the present tense and imperative mood when describing your changes
- Summarized changes
- Make sure all
.h, .cpp, .cs, .ps1 and .psm1 files have the correct copyright header
- This PR is ready to merge and is not Work in Progress.
- If the PR is work in progress, please add the prefix
WIP: or [ WIP ] to the beginning of the title (the WIP bot will keep its status check at Pending while the prefix is present) and remove the prefix when the PR is ready.
- Breaking changes
- User-facing changes
- Testing - New and feature
- Tooling
- I have considered the user experience from a tooling perspective and don't believe tooling will be impacted.
- OR
- I have considered the user experience from a tooling perspective and opened an issue in the relevant tool repository. This may include:
- Impact on PowerShell Editor Services which is used in the PowerShell extension for VSCode
(which runs in a different PS Host).
- Impact on Completions (both in the console and in editors) - one of PowerShell's most powerful features.
- Impact on PSScriptAnalyzer (which provides linting & formatting in the editor extensions).
- Impact on EditorSyntax (which provides syntax highlighting with in VSCode, GitHub, and many other editors).
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
jazzdelightsme and vexx32 reacted with thumbs up emoji
Uh oh!
There was an error while loading. Please reload this page.
|
This pull request has been automatically marked as Review Needed because it has been there has not been any activity for 7 days.
Maintainer, please provide feedback and/or mark it as Waiting on Author
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
|
try
|
|
|
{
|
|
|
$oldEAP = $ErrorActionPreference
|
|
|
$ErrorActionPreference = 'Stop'
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test name says nothing about "Stop". Make sense to have tests for all possible ErrorActionPreference values?
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
So looking through the behaviour here, it looks like something deeper is still happening in an unexpected way. Compare:
> get-process -banana; write-host 'hello'
Get-Process: A parameter cannot be found that matches parameter name 'banana'.
hello
> try { get-process -banana; write-host 'hello' } catch { }
# No output here
Parameter binding seems to create a non-terminating error that can be caught...
|
iSazonov reacted with thumbs up emoji
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Going to mark this for Working Group review again
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
This pull request has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for 15 days. It will be closed if no further activity occurs within 10 days of this comment.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This pull request was closed.
Reviewers
Copilot will automatically review once the pull request is marked ready for review
Uh oh!
There was an error while loading. Please reload this page.
Labels
Breaking-Change
breaking change that may affect users
CL-BreakingChange
Indicates that a PR should be marked as a breaking change in the Change Log
CL-General
Indicates that a PR should be marked as a general cmdlet change in the Change Log
Stale
Waiting on Author
The PR was reviewed and requires changes or comments from the author before being accept
WG-Engine
core PowerShell engine, interpreter, and runtime
Milestone
No milestone
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
|