1
0
mirror of https://github.com/ocornut/imgui.git synced 2025-02-25 22:38:10 +01:00

Updated Error Handling (markdown)

omar 2024-09-27 19:22:37 +02:00
parent 20ea5553d2
commit 28b27ef108

@ -1,5 +1,9 @@
Since Dear ImGui 1.91.3 we provide way to configure how to handle _SOME_ recoverable errors.
![image](https://github.com/user-attachments/assets/0fc64048-2c92-4e57-b618-ad9c71308a66)
![image](https://github.com/user-attachments/assets/2c46c666-3d85-4355-b80a-730c7b748d9d)
- Error recovery is provided as a way to facilitate recovery from errors in e.g. scripting languages, or after specific exceptions handlers.
- Error recovery is not perfect nor guaranteed! You are not supposed to rely on it in the course of a normal application run.
- Always ensure that on programmers seat you have at minimum Asserts or Tooltips enabled when making direct imgui API call! Otherwise it would severely hinder your ability to catch and correct mistakes!
@ -11,20 +15,21 @@ Typical scenarios:
- If you can resume execution from your assert, recovery will generally be performed.
- If you can configure your assert to be ignored, recover will generally be performed and the error tooltip will be visible.
#### (2) Programmer seats: if you disable Asserts (either via `ImGuiErrorFlags_NoAssert` either via a disabled IM_ASSERT macros) but keep Tooltips:
#### (2) Programmer seats (nicer/experimental)
- Disable Asserts `io.ConfigErrorRecoveryEnableAssert=false` but keep Tooltips visible.
- Recoverable errors will be visible in an error tooltip.
- The error tooltip will allow user to enable asserts.
- THIS IMPLICITLY RELY ON RECOVERY BEING FUNCTIONAL. A FEW CASES MIGHT PROBABLY STILL CRASH/ASSERTS.
#### (3) Non-programmer seats: what you might want to setup:
- Use `ImGuiErrorFlags_NoAssert`, but make sure log entries are well visible or reported somewhere.
- Use `io.ConfigErrorRecoveryEnableAssert=false`, but make sure log entries are well visible or reported somewhere.
- If errors are not well resurfaced to programmers, it may hinder your ability to prevent errors from staying/spreading in the codebase. Use with caution!
#### (4) If you offer the ability to write Dear ImGui code via e.g. scripting language, you may want to:
- Use `ErrorRecoveryStoreState()` to record stack sizes before running the script interpreter.
- Use `ImGuiErrorFlags_NoAssert` but only while in the context of the script interpreter.
- Use `io.ConfigErrorRecoveryEnableAssert=false` but only while in the context of the script interpreter.
- Maybe trigger a script break from your `ErrorCallback` if you can.
- Ensure that e.g `ImGuiErrorFlags_NoTooltip` is NOT set, and that log entries are well surfaced and visible somewhere.
- Ensure that `io.ConfigErrorRecoveryEnableTooltip=true`! And that log entries are well surfaced and visible somewhere.
#### (5) To handle resuming code execution after an exception:
- Use `ErrorRecoveryStoreState()` to record stack sizes before your try {} block.