这方面的资料不胜枚举,此文仅供本人备忘用.
1
2
3
4
5
6
7
8
9
10
11
12
13
static String a() {
try {
throw new RuntimeException("a");
} catch (RuntimeException e) {
return "d";
} catch (Exception e) {
return "b";
} finally {
return "c";
}
// return "d";
}
这段代码最终返回值是”c”.因为 finally 总是会执行.那这就跟 C#有点不一样了.所以记住,finally 一般是做一些资源的清理,不要在这里面返回值.
参考链接:
There’s no end to materials on this topic. This article is just for my own reference.
1
2
3
4
5
6
7
8
9
10
11
12
13
static String a() {
try {
throw new RuntimeException("a");
} catch (RuntimeException e) {
return "d";
} catch (Exception e) {
return "b";
} finally {
return "c";
}
// return "d";
}
This code ultimately returns “c”. Because finally always executes. This is a bit different from C#. So remember, finally is generally for resource cleanup—don’t return values here.
References:
このトピックに関する資料は数え切れません。この記事は私自身の参考用です。
1
2
3
4
5
6
7
8
9
10
11
12
13
static String a() {
try {
throw new RuntimeException("a");
} catch (RuntimeException e) {
return "d";
} catch (Exception e) {
return "b";
} finally {
return "c";
}
// return "d";
}
このコードは最終的に”c”を返します。finallyは常に実行されるためです。これはC#とは少し異なります。だから覚えておいてください、finallyは一般的にリソースのクリーンアップ用です—ここで値を返さないでください。
参考リンク:
Материалов по этой теме бесчисленное множество. Эта статья только для моей собственной справки.
1
2
3
4
5
6
7
8
9
10
11
12
13
static String a() {
try {
throw new RuntimeException("a");
} catch (RuntimeException e) {
return "d";
} catch (Exception e) {
return "b";
} finally {
return "c";
}
// return "d";
}
Этот код в конечном итоге возвращает “c”. Потому что finally всегда выполняется. Это немного отличается от C#. Так что помните, finally обычно для очистки ресурсов—не возвращайте значения здесь.
Ссылки:
💬 讨论 / Discussion
对这篇文章有想法?欢迎在 GitHub 上发起讨论。
Have thoughts on this post? Start a discussion on GitHub.