Java异常
所谓异常就是程序运行过程中发生的意外
分为运行期异常和编译期异常
异常的处理方式:
- try{
可能发生异常的代码
}
catch(Exception e){ //不能过细划分异常,可以将关心的异常捕获
e.printStackTrance();
//对异常做出处理
}
捕获异常的顺序和catch语句的顺序有关,当捕获到一个异常时,剩下的catch语句就不在进行匹配,因此安排catch语句顺序时,首先应该捕获最特殊的异常。
在try catch语句中,finally语句一定会被执行
finally {
一定会被执行的程序
}
如果try中包含return,finally也包含return,则从finally中执行return
如果是 system.exit(0)//进程结束
则从try中执行system.exit(0) - throw 仍异常对象 例如 throw new NullPointerException
- throws
例如
void fun () throws Exception {
}
谁调用fun函数,谁处理异常
throw与throws的区别
throw是语句抛出一个异常:throw (异常对象)
throws是方法可能抛出异常的声明;(public void do(int num) throws Exception1…)
throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。
throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throws说明你有那个可能,倾向。
throw的话,那就是你把那个倾向变成真实的了
垃圾回收机制:
编译器来丢弃对象,让内存泄露不会发生
java的垃圾回收发生的时机是什么?
答: 可能不会发生, 也可能永远不会发生
你可以这样认为 : 只要内存没有到耗尽的那一刻,那么垃圾回收就不会被启动
因为启动垃圾回收需要付出一定的效率代价,不启动的话 我们就不用付出这样一份高昂的代价.