From 28b27ef108057e74798b51f7dd06a131926450ce Mon Sep 17 00:00:00 2001 From: omar Date: Fri, 27 Sep 2024 19:22:37 +0200 Subject: [PATCH] Updated Error Handling (markdown) --- Error-Handling.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Error-Handling.md b/Error-Handling.md index 8216507..07bfebb 100644 --- a/Error-Handling.md +++ b/Error-Handling.md @@ -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.