
# Objective [see original comment](https://github.com/bevyengine/bevy/pull/18801#issuecomment-2796981745) > Alternately, could we store it on the World instead of a global? I think we have a World nearby whenever we call default_error_handler(). That would avoid the need for atomics or locks, since we could do ordinary reads and writes to the World. Global error handlers don't actually need to be global – per world is enough. This allows using different handlers for different worlds and also removes the restrictions on changing the handler only once. ## Solution Each `World` can now store its own error handler in a resource. For convenience, you can also set the default error handler for an `App`, which applies it to the worlds of all `SubApp`s. The old behavior of only being able to set the error handler once is kept for apps. We also don't need the `configurable_error_handler` feature anymore now. ## Testing New/adjusted tests for failing schedule systems & observers. --- ## Showcase ```rust App::new() .set_error_handler(info) … ```
11 lines
359 B
Markdown
11 lines
359 B
Markdown
---
|
|
title: Global default error handler
|
|
pull_requests: [18810]
|
|
---
|
|
|
|
Worlds can now have different default error handlers, so there no longer is a global handler.
|
|
|
|
Replace uses of `GLOBAL_ERROR_HANDLER` with `App`'s `.set_error_handler(handler)`.
|
|
For worlds that do not directly belong to an `App`/`SubApp`,
|
|
insert the `DefaultErrorHandler(handler)` resource.
|