patch 8.2.3470: crash with error in :catch and also in :finally

Problem:    Crash with error in :catch and also in :finally.
Solution:   Only discard an exception if there is one. (closes #8954)
diff --git a/src/ex_eval.c b/src/ex_eval.c
index 259cf67..503a3ae 100644
--- a/src/ex_eval.c
+++ b/src/ex_eval.c
@@ -2374,7 +2374,8 @@
 		    default:
 			if (cstack->cs_flags[idx] & CSF_FINALLY)
 			{
-			    if (cstack->cs_pending[idx] & CSTP_THROW)
+			    if ((cstack->cs_pending[idx] & CSTP_THROW)
+				    && cstack->cs_exception[idx] != NULL)
 			    {
 				// Cancel the pending exception.  This is in the
 				// finally clause, so that the stack of the
diff --git a/src/testdir/test_trycatch.vim b/src/testdir/test_trycatch.vim
index 052fab7..ac12671 100644
--- a/src/testdir/test_trycatch.vim
+++ b/src/testdir/test_trycatch.vim
@@ -2273,6 +2273,18 @@
   call delete('XtestThrow')
 endfunc
 
+func ThisWillFail()
+  try
+    if x | endif
+  catch
+    for l in []
+  finally 
+endfunc
+
+func Test_error_in_catch_and_finally()
+  call assert_fails('call ThisWillFail()', ['E121:', 'E600:'])
+endfunc
+
 
 " Modeline								    {{{1
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
diff --git a/src/version.c b/src/version.c
index d15495e..23b0c36 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3470,
+/**/
     3469,
 /**/
     3468,