@@ -150,22 +150,25 @@ async def _create_layout_update(self, element: AbstractElement) -> LayoutUpdate:
150150 return element_state .path , changes
151151
152152 async def _render_element (self , element_state : ElementState ) -> Dict [str , Any ]:
153- element_state .life_cycle_hook .element_will_render ()
153+ try :
154+ element_state .life_cycle_hook .element_will_render ()
154155
155- self ._clear_element_state_event_handlers (element_state )
156- self ._unmount_element_state_children (element_state )
156+ self ._clear_element_state_event_handlers (element_state )
157+ self ._unmount_element_state_children (element_state )
157158
158- # BUG: https://github.com/python/mypy/issues/9256
159- raw_model = await _render_with_life_cycle_hook (element_state ) # type: ignore
159+ # BUG: https://github.com/python/mypy/issues/9256
160+ raw_model = await _render_with_life_cycle_hook (element_state ) # type: ignore
160161
161- if isinstance (raw_model , AbstractElement ):
162- raw_model = {"tagName" : "div" , "children" : [raw_model ]}
162+ if isinstance (raw_model , AbstractElement ):
163+ raw_model = {"tagName" : "div" , "children" : [raw_model ]}
163164
164- resolved_model = await self ._render_model (element_state , raw_model )
165- element_state .model .clear ()
166- element_state .model .update (resolved_model )
165+ resolved_model = await self ._render_model (element_state , raw_model )
166+ element_state .model .clear ()
167+ element_state .model .update (resolved_model )
167168
168- element_state .life_cycle_hook .element_did_render ()
169+ element_state .life_cycle_hook .element_did_render ()
170+ except Exception :
171+ logger .exception (f"Failed to render { element_state .element_obj } " )
169172
170173 # We need to return the model from the `element_state` so that the model
171174 # between all `ElementState` objects within a `Layout` are shared.
0 commit comments