From ddbb405b87b5e26c0821d0104a3fc67435f8acc8 Mon Sep 17 00:00:00 2001 From: Snailclimb Date: Tue, 5 Mar 2019 15:43:15 +0800 Subject: [PATCH] =?UTF-8?q?Update=20Java=E5=9F=BA=E7=A1=80=E7=9F=A5?= =?UTF-8?q?=E8=AF=86->=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...272\347\241\200\347\237\245\350\257\206.md" | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git "a/Java\347\233\270\345\205\263/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" "b/Java\347\233\270\345\205\263/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" index 57fa9906..68549209 100644 --- "a/Java\347\233\270\345\205\263/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" +++ "b/Java\347\233\270\345\205\263/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" @@ -412,9 +412,9 @@ final关键字主要用在三个地方:变量、方法、类。 ### 异常处理总结 -- try 块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。 -- catch 块:用于处理try捕获到的异常。 -- finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。 +- **try 块:**用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。 +- **catch 块:**用于处理try捕获到的异常。 +- **finally 块:**无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。 **在以下4种特殊情况下,finally块不会被执行:** @@ -423,6 +423,18 @@ final关键字主要用在三个地方:变量、方法、类。 3. 程序所在的线程死亡。 4. 关闭CPU。 +下面这部分内容来自issue:。 + +**关于返回值:** + +如果try语句里有return,返回的是try语句块中变量值。 +详细执行过程如下: + +1. 如果有返回值,就把返回值保存到局部变量中; +2. 执行jsr指令跳到finally语句里执行; +3. 执行完finally语句后,返回之前保存在局部变量表里的值。 +4. 如果try,finally语句里均有return,忽略try的return,而使用finally的return. + ## 33 Java序列化中如果有些字段不想进行序列化 怎么办 对于不想进行序列化的变量,使用transient关键字修饰。 -- GitLab