Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
effective-java-3rd-chinese
提交
60378d23
E
effective-java-3rd-chinese
项目概览
OpenDocCN
/
effective-java-3rd-chinese
9 个月 前同步成功
通知
214
Star
9
Fork
4
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
effective-java-3rd-chinese
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
60378d23
编写于
2月 22, 2020
作者:
G
GungnirLaevatain
提交者:
GitHub
2月 21, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改了第69、73、75中的几处笔误 (#50)
* fix typo * fix typo * fix typo
上级
ac45bec1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
4 addition
and
4 deletion
+4
-4
docs/notes/69. 只针对异常的情况下才使用异常.md
docs/notes/69. 只针对异常的情况下才使用异常.md
+1
-1
docs/notes/73. 抛出与抽象对应的异常.md
docs/notes/73. 抛出与抽象对应的异常.md
+1
-1
docs/notes/75. 在细节消息中包含失败一捕获信息.md
docs/notes/75. 在细节消息中包含失败一捕获信息.md
+2
-2
未找到文件。
docs/notes/69. 只针对异常的情况下才使用异常.md
浏览文件 @
60378d23
...
...
@@ -12,7 +12,7 @@ try {
}
```
这段代码
有什用,
看起来根本不明显,这正是它没有真正被使用的原因(详见 67 条)。事实证明,作为一个要对数组元素进行遍历的实现方式,它的构想是十分拙劣的。当这个循环企图访问数组边界之外的第一个数组元素的时候,使用 try-catch 并且忽略
`ArrayIndexOutOfBoundsException`
异常的手段来达到终止无限循环的目的。假定它与数组循环的标准模式是等价的,对于它的标准模式每个 Java 程序员都可以一眼辨认出来:
这段代码
是干什么的?
看起来根本不明显,这正是它没有真正被使用的原因(详见 67 条)。事实证明,作为一个要对数组元素进行遍历的实现方式,它的构想是十分拙劣的。当这个循环企图访问数组边界之外的第一个数组元素的时候,使用 try-catch 并且忽略
`ArrayIndexOutOfBoundsException`
异常的手段来达到终止无限循环的目的。假定它与数组循环的标准模式是等价的,对于它的标准模式每个 Java 程序员都可以一眼辨认出来:
```
java
for
(
Mountain
m
:
range
)
...
...
docs/notes/73. 抛出与抽象对应的异常.md
浏览文件 @
60378d23
...
...
@@ -53,7 +53,7 @@ class HigherLevelException extends Exception {
}
```
大多数标准的异常都有支持链的构造器。对于没有支持链的异常,可以利用 Throwable 的 initCause 方法设置原因。异常链不仅让你可以通过程序(用 getCause)访问原因,还可以将原因的堆
战
轨迹集成到更高层的异常中。
大多数标准的异常都有支持链的构造器。对于没有支持链的异常,可以利用 Throwable 的 initCause 方法设置原因。异常链不仅让你可以通过程序(用 getCause)访问原因,还可以将原因的堆
栈
轨迹集成到更高层的异常中。
**尽管异常转译与不加选择地从低层传递异常的做法相比有所改进,但是也不能滥用它。**
如有可能,处理来自低层异常的最好做法是,在调用低层方法之前确保它们会成功执行,从而避免它们抛出异常。有时候,可以在给低层传递参数之前,检查更高层方法的参数的有效性,从而避免低层方法抛出异常。
...
...
docs/notes/75. 在细节消息中包含失败一捕获信息.md
浏览文件 @
60378d23
...
...
@@ -6,11 +6,11 @@
对安全敏感的信息有一条忠告。由于在诊断和修正软件问题的过程中,许多人都可以看见堆栈轨迹,
**因此千万不要在细节消息中包含密码、密钥以及类似的信息!**
虽然在异常的细节消息中包含所有相关的数据是非常重要的,但是包含大量的描述信息往往没有什么意义。堆栈轨迹的用途是与源文件结合起来进行分析,它通常包含抛出该异常的确切文件和行数,以及堆
校
中所有其他方法调用所在的文件和行数。关于失败的冗长描述信息通常是不必要的,这些信息可以通过阅读源代码而获得。
虽然在异常的细节消息中包含所有相关的数据是非常重要的,但是包含大量的描述信息往往没有什么意义。堆栈轨迹的用途是与源文件结合起来进行分析,它通常包含抛出该异常的确切文件和行数,以及堆
栈
中所有其他方法调用所在的文件和行数。关于失败的冗长描述信息通常是不必要的,这些信息可以通过阅读源代码而获得。
异常的细节消息不应该与“用户层次的错误消息”混为一谈,后者对于最终用户而言必须是可理解的。与用户层次的错误消息不同,异常的字符串表示法主要是让程序员或者网站可靠性工程师用来分析失败的原因。因此,信息的内容比可读性要重要得多。用户层次的错误消息经常被本地化,而异常的细节消息则几乎没有被本地化。
为了确保在异常的细节消息中包含足够的失败- 捕捉信息, 一种办法是在异常的构造器而不是字符串细节消息中引
人
这些信息。然后,有了这些信息,只要把它们放到消息描述中,就可以自动产生细节消息。例如
`IndexOutOfBoundsException`
使用如下构造器代替
`String`
构造器:
为了确保在异常的细节消息中包含足够的失败- 捕捉信息, 一种办法是在异常的构造器而不是字符串细节消息中引
入
这些信息。然后,有了这些信息,只要把它们放到消息描述中,就可以自动产生细节消息。例如
`IndexOutOfBoundsException`
使用如下构造器代替
`String`
构造器:
```
java
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录