您的位置:首页 > 职场人生

黑马程序员--java基础--异常

2015-08-04 21:01 387 查看
-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

Throwable

Throwable类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。(包括Error和Exception两个子类)

编译时异常

除了RuntimeException及其子类,Exception中所有的子类都是,这种异常必须要处理,要不编译通不过

运行是异常

RuntimeException及其子类都是,这种异常不用处理,编译会通过,不过这样的程序会有安全隐患,遇到这种异常是需要改代码的

严重错误问题

用Error进行描述,这个问题发生后,一般不编写针对代码进行处理,而是要对程序进行修正.通常都是由虚拟机抛出的问题

  方法: toString()  getMessage()  printStackTrace()

举个形象的例子:骑车去旅行

  Error:走到半路上,发生山路塌陷,或者出现了泥石流,这个问题很严重,不是自己能够立马解决的。

  Exception:出门前,要看看车轮子以及车链子等是否还在

  RuntimeException:在骑车的过程中,有好路不走,偏偏要走石子路,结果车出毛病了

异常处理 的第一种方法:try catch

   |-- 书写格式
try{

需要检测异常的代码;

}catch(异常类型 变量名){

处理异常代码;

}

   |-- 异常发生后代码处理流程

     异常一旦发生,异常后面的代码不执行,程序跳转到catch,执行catch中的代码

异常处理 的第二种方法:throw throws

    |--throw 写在方法内部,后面new 异常对象, throw 方法内部手动抛出异常

    |--
 throws 写在方法声明上,后面写异常类名字,throws 方法声明上标出有异常

throw和throws 的区别

throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws只是表示出现异常的一种可能性,并不一定会发生这些异常
throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内或方法上的语句处理
执行throw则一定抛出了某种异常  

finally代码块

格式:finally{

执行
4000
语句;

}
只要虚拟机还在运行,finally中存放的语句就必须执行,用于释放资源

小问题:如果try里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前还是return后

public class Test2 {
public static void main(String[] args) {
int a =method();
System.out.println(a);
}
public static int method() {
//定义变量a,赋初值为1
int a=1;
try {
System.out.println("执行try语句");
return a++;
}
//如果先执行finally,再执行try中的return,那么返回的a应该是1,如果返回值是2,则说明先执行try中的return,再执行finally
finally {
System.out.println("执行finally语句");
return a;
}
}

}

 异常类继承中的注意事项:

子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。

如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他异常中的一部分,子类不能抛出父类没有的异常

如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: