Throwable
-Error
-Exception
1.异常的处理:
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码:(处理方式)
}
finally
{
一定会执行的语句;
}
2.对捕获的异常对象进行常见方法操作
getMessage():获取异常信息
toString():异常名称:异常信息
printStackTrace():异常名称,异常信息,异常出现的位置。其实JVM默认的异常处理机制,就是在调用printStackTrace方法,打印异常的栈堆跟踪信息。
在函数上声明异常:便于提高安全性,让调用者进行处理,不处理编译失败。
对多异常的处理:
1.声明异常时,建议声明更为具体的异常,这个处理的可以更具体。
2.对方声明几个异常,就对应有几个catch块。
如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。
当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。
1.要么在内部try catch处理。
2.要么在函数上声明调用者处理
一般情况下,函数内出现异常,函数上需要声明
如何定义 异常信息 呢?
因为父类中已经把异常信息的操作都完成了。
所以子类只要在构造时,将异常信息传递给父类通过super语句。
那么就可以直接通过getMessge方法获取自定义的异常信息。
自定义异常:
必须是自定义类继承Exception.
继承Exception的原因:
异常体系有一个特点,因为异常类和异常对象被抛出,他们都具备可抛性,这个可抛性是Throwable这个体系中独有特点。
只有这个体系中的类和对象才可以被throws和throw操作。
class FushuException extends Exception
{
int num;
FushuException(String mags,int num)
{
super(mags);//因为父类中已经把异常信息的操作都完成了。
//所以子类只要在构造时,将异常信息传递给父类通过super语句。
//那么就可以直接通过getMessge方法获取自定义的异常信息。
this.num=num;
}
public int getNum()
{
return num;
}
}
class ExceptionDemo // extends Student
{
public int study(int a,int b)throws FushuException//一般情况下,函数内出现异常,函数上需要声明
{
if(b<0)
throw new FushuException("出现了负数的情况-----",b);//手动通过throw关键字抛出一个自定义对象。
//当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作
return a/b;
}
}
class Demo
{
public static void main(String[] args)
{
ExceptionDemo c=new ExceptionDemo();
try
{
int d=c.study(4,-1);
System.out.println("d="+d);
}
catch (FushuException e)
{
System.out.println(e.toString()+"这个负数是:"+e.getNum());
System.out.println("chu xian fu shu");
}
System.out.println("over");
}
}
|
|