- 执行别人的方法时, 要注意是否存在风险
- java 异常处理依赖你已经知道所调用方法是有风险的
java API 说明文件中会显示该方法是否有异常, 如果有, 那么你就要处理异常。
try {
} catch() {
}
注意: 如果 try 里的程序有多段代码可能出现异常, 那么 catch 所抓住的异常一定是先出现问题的一样.
- 抛出与抓到异常
( 方法本身的定义, 可见方法本身只要抛出就可以了 )
( 调用该方法, 它要 catch 异常 )
- try/catch 块的流程
如果遇到异常时, 从抛出异常的代码直接到 catch 里运行, 然后继续下去
finally: 无论如何都要执行
try {
} catch() {
} finally {
}
finally块是用来存放不管有没有异常都的执行的程序
如果没有 finally, 你的同时把 turnOverOff()摆在 try与 catch两处. finally块可以让你把所有重要的清理程序代码集中在一处.
- 处理多重异常
抛出了 2 个异常
多个 catch
- 异常是多态的
可以用 super 来处理所有异常并不代表就应该这么做
try {
} catch( Exception ex ) {
// 恢复什么? 这会捕获所有的异常, 因此你会搞不清楚哪里的错
}
为每个需要单独处理的异常编写不同的catch块
- 有多个 catch块时要从小排到达( 这是肯定的, 反之, 如果从大到小, 那么第一个catch会将所有的异常catch住)
如果第一个是最大的, 剩下的就不会被用到了.
- 处理异常的方法
1. 处理 ( try {} catch () {} )
2. 声明 ( 就是推给后来人做 )
void foo() throws ClothingException { // 声明会抛出异常, 但是没有try-catch, 所以谁调用该方法, 谁就要处理异常
laundry.doLaundry();
}
- 规则
catch与finally不能没有try
try 一定要有catch或finally ( 只带有finally的try必须声明异常)
void go() throws FooException (
try {
x.doStuff();
} finally {}
}
try 与 catch 之间不能有程序