伙伴们注意了!
小编在这里给大家送上关注福利:
转发本文, 关注 "速学 Java" 公众号即可领取小编精心准备的资料一份!
本文总结了关于 Java 异常的 10 个常见问题.
1. 检查与未检查
简而言之, 检查过的异常必须显式地在方法中捕获或在方法的 throw 子句中声明.
未检查异常是由无法解决的问题引起的, 如除以 0, 空指针等.
检查异常尤其重要, 因为您希望使用您的 API 的其他开发人员知道如何处理异常.
例如, IOException 是一个常用的检查异常, RuntimeException 是一个未检查异常.
在阅读其余内容之前, 您可以查看 Java 异常层次结构图.
2. 异常管理的最佳实践
如果一个异常可以被正确处理, 那么它应该被捕获, 否则, 它应该被抛出.
3. 为什么 try 中定义的变量不能用于 catch 或 finally 中?
在下面的代码中, try 块中声明的字符串 s 不能在 catch 子句中使用.
代码没有通过编译.
原因是您不知道在 try 块的什么地方会抛出异常.
异常很可能是在声明对象之前抛出的.
这个例子是正确的.
4. 为什么 Double.parseDouble(null) 和 Integer.parseInt(null) 抛出不同的异常?
它们会抛出不同的异常.
这是 JDK 的问题.
它们是由不同的开发人员开发的, 所以不值得过多思考.
5. Java 中常用的运行时异常
这里只是其中的一些.
- IllegalArgumentException
- ArrayIndexOutOfBoundsException
当条件不满足时, 可在 if 语句中使用:
6. 我们能在同一个 catch 子句中捕获多个异常吗?
答案是肯定的.
只要这些异常类可以追溯到类继承层次结构中的同一个超类, 您就只能使用这个超类.
7. 构造函数能抛出 java 中的异常吗?
答案是肯定的.
构造函数是一种特殊的方法.
下面是一个代码示例.
8. 在 final 子句中抛出异常
这样做是合法的:
但是为了具有更好的代码可读性, 您应该将嵌入的 try-catch 块包装为一个新方法, 然后将方法调用放在 finally 子句中.
9. 最后块中还能用吗
是的, 它可以.
10. 为什么开发人员默默地使用异常?
像下面这样的代码段出现的次数太多了.
如果正确地处理异常是如此重要, 那么开发人员为什么要一直这样做呢?
忽视很容易.
频繁出现并不意味着正确.
最后, 想学习 Java 的小伙伴们!
关注 "速学 java" 公众号就可以拿到一份我为大家准备的 Java 学习资料!
对 Java 感兴趣的小伙伴也可以加 小编 V: suxuejava
来源: http://www.jianshu.com/p/3132fe265f09