CARVIEW |
Select Language
HTTP/2 200
date: Sun, 27 Jul 2025 19:58:48 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"7e2a4e7669b9575ad72fbb7f83c1c328"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=0n8d4CtFEQzxrWQEyFTcVzltxmM0yzvUAQWxgG5DUkoretiIIj3FerI5pj9qOGHZy5USlHfpisYs73ztUFYbYmFW0MWvnYA%2BATmyk4d84TS1keNFS5Sa2YQLkHwegiEsfikCocEqQ5c1NcwraP7d5jvKthUVlyKxlW7C8xK22SUsGQDb%2BG%2BiuG9gJqa52HetCViCSCUY92aUdxLTiT82HP%2BM4NcThuMq83hUclS3DUSobjYDbewd%2BHxGyvL31ZsdqPREGjpjASWIgSJ2w23Yjg%3D%3D--0FHWexA7VcsZUFAo--7VlZwBeT7pV%2BOSbmb%2B2zxQ%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1386802278.1753646328; Path=/; Domain=github.com; Expires=Mon, 27 Jul 2026 19:58:48 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Mon, 27 Jul 2026 19:58:48 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: CD08:0A67:695AB3:862E23:688684F8
Error Handling · ocornut/imgui Wiki · GitHub
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 11.1k
Error Handling
omar edited this page Sep 30, 2024
·
7 revisions
Since Dear ImGui 1.91.3 we provide way to configure how to handle SOME recoverable errors.
- Error recovery is provided as a way to facilitate:
- Recovery after a programming error (native code or scripting language - the later tends to facilitate iterating on code while running).
- Recovery after running an exception handler or any error processing which may skip code after an error has been detected.
- Error recovery is not perfect nor guaranteed! It is a feature to ease development. You are not supposed to rely on it in the course of a normal application run.
- By design, we do NOT allow error recovery to be 100% silent. One of the three options needs to be checked!
- Always ensure that on programmers seats 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!
Typical scenarios:
- Recoverable errors will call
IM_ASSERT_USER_ERROR()
, leading toIM_ASSERT()
being executed. - 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.
- 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 functional recovery. A few cases might probably still crash/assert. If this works well, we may make it the default in future versions.
- 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!
- Use
ErrorRecoveryStoreState()
to record stack sizes before running 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
io.ConfigErrorRecoveryEnableTooltip=true
! And that log entries are well surfaced and visible somewhere.
- Use
ErrorRecoveryStoreState()
to record stack sizes before your try {} block. - Temporary adjust settings (e.g. disable assert, set a log callback).
- Call
ErrorRecoveryTryToRecoverState()
. - Restore settings.
In ImGuiIO
:
bool ConfigErrorRecovery; // = true // Enable error recovery support. Some errors won't be detected and lead to direct crashes if recovery is disabled.
bool ConfigErrorRecoveryEnableAssert; // = true // Enable asserts on recoverable error. By default call IM_ASSERT() when returning from a failing IM_ASSERT_USER_ERROR()
bool ConfigErrorRecoveryEnableDebugLog; // = true // Enable debug log output on recoverable errors.
bool ConfigErrorRecoveryEnableTooltip; // = true // Enable tooltip on recoverable errors. The tooltip include a way to enable asserts if they were disabled.
e.g.
ImGuiErrorRecoveryState state;
ImGui::ErrorRecoveryStoreState(&state);
.... run scripting code
ImGui::ErrorRecoveryTryToRecoverState(&state);
Exception handling:
ImGuiErrorRecoveryState state;
ImGui::ErrorRecoveryStoreState(&state);
try
{
.... run code
}
catch
{
ImGui::ErrorRecoveryTryToRecoverState(&state);
}
Clone this wiki locally
You can’t perform that action at this time.