# 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) … ``` |
||
|---|---|---|
| .. | ||
| app.rs | ||
| lib.rs | ||
| main_schedule.rs | ||
| panic_handler.rs | ||
| plugin_group.rs | ||
| plugin.rs | ||
| schedule_runner.rs | ||
| sub_app.rs | ||
| task_pool_plugin.rs | ||
| terminal_ctrl_c_handler.rs | ||