From 6853bbd9a1507317bccb21890b3ba387fe41a600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20K=C5=82osko?= Date: Thu, 4 Aug 2022 00:28:32 +0200 Subject: [PATCH] Fix error recovery when serializing unknown structs in JS view payload --- lib/livebook_web/channels/js_view_channel.ex | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/livebook_web/channels/js_view_channel.ex b/lib/livebook_web/channels/js_view_channel.ex index dba4644da..77d095881 100644 --- a/lib/livebook_web/channels/js_view_channel.ex +++ b/lib/livebook_web/channels/js_view_channel.ex @@ -105,12 +105,15 @@ defmodule LivebookWeb.JSViewChannel do defp run_safely(fun) do try do {:ok, fun.()} - catch - :error, %Protocol.UndefinedError{protocol: Jason.Encoder, value: value} -> - {:error, "value #{inspect(value)} is not JSON-serializable, use another data type"} + rescue + error -> + case error do + %Protocol.UndefinedError{protocol: Jason.Encoder, value: value} -> + {:error, "value #{inspect(value)} is not JSON-serializable, use another data type"} - :error, error -> - {:error, Exception.message(error)} + error -> + {:error, Exception.message(error)} + end end end