一.java throwable有两种情况造成:
1.Error:是由于JVM(VirtualMachineError)或线程死亡(threadDeath)导致的,是不可治愈的。
2.Exception(异常):是由于RuntimeException或者编译时异常导致的,是可治愈的。
RuntimeException又是因为自己的代码有问题,可动手自己解决。这个错误在抛出异常后可不声明,因为基本可以通过程序员良好的编译习惯避免的。
编译时异常的解决方法有:&1捕获异常,&2.抛出异常。
什么时候用捕获什么时候又用抛出呢 ?如果需要通知方法的调用者有了异常,需要 抛出;而如果用户直接与代码打交道,必须用捕获,不能让用户看到异常。
二.捕获异常
try{
异常的代码(try块遇到异常代码后面的代码不会执行,)
}catch{
异常的类 变量名(习惯定位为e);
}
当遇到异常时候,
注意:&1.try块后可跟多个catch,也就是这个代码有多个异常 。
&2.catch之后走的异常情况必须是从小到大的类型。
&3还可用的类型为try{
}catch{
}finally{
这里面是不管异常不异常都必须执行的代码。finally代码是只有JVM退出时才不会执行的。
}
&4.有三种类型分别为:
try-catch 只能处理异常
try-catch-finally 既能处理异常,又能释放资源
try-finally 释放资源
三.抛出异常
1.throw new 异常类(" ");
然后再该方法上用throws 异常类 来声明。
throw与throws的区别:&1.throw只是在一个方法的内部抛出,而throws是在这个方法上声明抛出的异常;&2.throws可以一次声明多个异常,但是throw一次只能声明一个异常
2.细节
&1.遇到异常抛出后,如果不去捕获,就要在这个方法上去声明异常。
&2.一个方法碰到throw,立刻会停止运行。
四.基本的异常
&1.toString() 打印异常类的包名和异常类名
&2.getMessage() 返回创建throwable对象时的传入的消息字符串
&3.printStackTrace()打印异常栈的信息
过程:当程序遇到异常的时候,会创建一个异常类对象,程序终止,并使用printStrackTrace()打印出异常的信息
五.自定义异常
class 异常类 extends Exception{
//初始化
public 异常类(String name){
super(name);
}
}