-
Notifications
You must be signed in to change notification settings - Fork 122
Use FormatMessage for exception messages in cases where the stowed/language exception doesn't contain a message #2022
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use FormatMessage for exception messages in cases where the stowed/language exception doesn't contain a message #2022
Conversation
…nguage exception doesn't contain a message
|
Thanks for the change, kicked off CI. |
|
are the CI failures related to the PR? GitHub doesn't allow me to see the details of them |
riverar
left a comment
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.
Can we get a test for this too? Ideally one that runs RPC_E_WRONG_THREAD through this helper to ensure it spits out the right message.
|
Think we should also clean up the commit message on merge (this is not related to WinRT Originate errors) and add a proper PR description here for our future selves looking back at this change. Perhaps something like:
|
No, it is unrelated. Have a PR to fix it, after it is merged, you can rebase your changes. |
…ce to check for empty error messages
|
Is there any test that we can add here to confirm we get expected message for a certain HRESULT. |
|
Isn't it enough that we test the In addition, I think we should test if the message is not empty, rather than requiring a string match, because error messages might be localized. |
|
I'd still check the error message when possible to ensure we're not getting garbage. Can wrap it in a conditional so that non en-US developers don't break. If that's not a concern for this project, I'd delete the en-US check. [Fact]
public void TestGetExceptionForHR_WithValidHResult_ReturnsSystemFormattedException()
{
// Arrange
const int RPC_E_WRONG_THREAD = unchecked((int)0x8001010E);
// Act
Exception exception = ExceptionHelpers.GetExceptionForHR(RPC_E_WRONG_THREAD);
// Assert
Assert.NotNull(exception);
Assert.False(string.IsNullOrWhiteSpace(exception.Message));
if (CultureInfo.CurrentUICulture.Name == "en-US")
{
Assert.Equal("The application called an interface that was marshalled for a different thread. (0x8001010E)", exception.Message);
}
}I can't test this for you because the build fails despite following the on-boarding instructions. |
…release.251115.2 (#4204) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [Microsoft.Windows.CsWinRT](https://redirect.github.com/microsoft/cswinrt) | `2.3.0-prerelease.251015.2` -> `2.3.0-prerelease.251115.2` |  |  | --- ### Release Notes <details> <summary>microsoft/cswinrt (Microsoft.Windows.CsWinRT)</summary> ### [`v2.3.0-prerelease.251115.2`](https://redirect.github.com/microsoft/CsWinRT/releases/tag/2.3.0-prerelease.251115.2): CsWinRT 2.3.0-prerelease.251115.2 This is a prerelease version of C#/WinRT with more bug fixes and improvements. **C#/WinRT package**: <https://www.nuget.org/packages/Microsoft.Windows.CsWinRT/2.3.0-prerelease.251115.2> #### What's Changed - Fix warning by [@​manodasanW](https://redirect.github.com/manodasanW) in [microsoft/CsWinRT#2023](https://redirect.github.com/microsoft/CsWinRT/pull/2023) - Use FormatMessage for exception messages in cases where the stowed/language exception doesn't contain a message by [@​ahmed605](https://redirect.github.com/ahmed605) in [microsoft/CsWinRT#2022](https://redirect.github.com/microsoft/CsWinRT/pull/2022) - Merge to staging/2.3 by [@​manodasanW](https://redirect.github.com/manodasanW) in [microsoft/CsWinRT#2025](https://redirect.github.com/microsoft/CsWinRT/pull/2025) - Merge staging/2.3 to master by [@​manodasanW](https://redirect.github.com/manodasanW) in [microsoft/CsWinRT#2030](https://redirect.github.com/microsoft/CsWinRT/pull/2030) - Fix 'Initialize' typo in several files by [@​Lightczx](https://redirect.github.com/Lightczx) in [microsoft/CsWinRT#2035](https://redirect.github.com/microsoft/CsWinRT/pull/2035) - Fix design time build error causing incremental build issue by [@​manodasanW](https://redirect.github.com/manodasanW) in [microsoft/CsWinRT#2036](https://redirect.github.com/microsoft/CsWinRT/pull/2036) - Move TestWinRT repo clone to resource by [@​manodasanW](https://redirect.github.com/manodasanW) in [microsoft/CsWinRT#2032](https://redirect.github.com/microsoft/CsWinRT/pull/2032) - Fix weak reference rehydration scenarios for non projected types by [@​manodasanW](https://redirect.github.com/manodasanW) in [microsoft/CsWinRT#2043](https://redirect.github.com/microsoft/CsWinRT/pull/2043) - Add UpToDateCheckBuilt to cover incremental build of Implementation dlls by [@​jevansaks](https://redirect.github.com/jevansaks) in [microsoft/CsWinRT#2051](https://redirect.github.com/microsoft/CsWinRT/pull/2051) - Fix issue where IReferenceArray is not being found by [@​manodasanW](https://redirect.github.com/manodasanW) in [microsoft/CsWinRT#2071](https://redirect.github.com/microsoft/CsWinRT/pull/2071) - Fix issue with unsubscribing from events on non-agile objects by [@​manodasanW](https://redirect.github.com/manodasanW) in [microsoft/CsWinRT#2079](https://redirect.github.com/microsoft/CsWinRT/pull/2079) - Fix issues with CopyToManagedArray by [@​manodasanW](https://redirect.github.com/manodasanW) in [microsoft/CsWinRT#2084](https://redirect.github.com/microsoft/CsWinRT/pull/2084) #### New Contributors - [@​ahmed605](https://redirect.github.com/ahmed605) made their first contribution in [microsoft/CsWinRT#2022](https://redirect.github.com/microsoft/CsWinRT/pull/2022) - [@​Lightczx](https://redirect.github.com/Lightczx) made their first contribution in [microsoft/CsWinRT#2035](https://redirect.github.com/microsoft/CsWinRT/pull/2035) **Full Changelog**: <microsoft/CsWinRT@2.3.0-prerelease.250720.1...2.3.0-prerelease.251115.2> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/reactiveui/ReactiveUI). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xNi4xIiwidXBkYXRlZEluVmVyIjoiNDIuMzIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiRGVwZW5kZW5jeSBNYW5hZ2VtZW50Il19--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

Updated HRESULT to Exception conversion logic to fall back to system-formatted error messages via the Win32 FormatMessage API when custom error text is not available or is blank. This ensures more consistent and informative exception messages by leveraging Windows' built-in error descriptions.
Example:
