1、异常:就是程序在运行时出现的不正常的情况。
异常的由来:问题也是现实生活中的一个具体的事物,亦可以通过Java的类的形式描述,并封装成对象。其实就是Java对不正常情况描述后的对象体现。
对问题的划分:两种:一种是严重的问题,一种非严重的问题。
1)对于严重的,Java通过Error类进行描述。对于Error一般不编写针对性的代码对其进行处理。
2)对于非严重的,Java通过Exception类进行描述。对于Exception可以使用针对性的处理方式进行处理。
注意:无论Error或者Exception都具有一些共性内容。比如:不正常情况的内容,引发原因等。
Throwable:Error,Exception。
2、当在函数内部出现了throw抛出异常对象,1)那么就必须要给对应的处理动作,2)要么在内部trycatch处理,要么在函数上声明让调用者处理。一般情况下,函数内出现异常,函数上需要声明。
如何定义异常信息:
int div(int a ,int b) throws FuShuException
{
if (b<0)
thrownew FuShuException();//
returna/b;
}
}
因为父类中已经把异常信息的操作都完成了。所以子类只要在构造时,将异常信息传递给父类通过super语句。那就可以直接通过getMessage获取自定义的异常信息。
自定义异常必须是自定义类继承Exception。
继承Exception原因:异常体系有一个特点,因为异常和异常对象都被抛出。他们都具备可抛性,这个可抛性是Throwable这个体系中特有特点。
只有这个体系中的类和对象才可以被throw和throws操作。
1、Exception中有一个特殊的子类异常RuntimeException(其有很多子类)运行时异常。
1)如果在函数内容抛出异常,函数上可以不用声明,编译一样通过。
2)如果在函数上声明了该异常。调用者可以不用进行处理。编译一
样通过。(ArithmeticException;)
例如:
int div(inta, int b){
if(b<0)
throw new ArithmeticException(“被除零了”);
teturn a/b;
}
3、之所以不用在函数声明,是因为不需要烫调用者处理。当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。
例子:
Class person
{
Publicvoid checkName(String name)
{
//If(name.equals(“lisi”))//NullPointerException(空指针异常)
If(“lisi”.equals(name))//if(neme!=null&&name.equals(“lisi”)) 这样就不会错。
System.out.println(“yes”);
Else
System.out.println(“no”);
}}
Main(){
Personp=new person();
p.checkName(null);}
4、自定义异常时:如果该异常的发生,无法再继续进行运算,就让自定义异常继承RuntimeException(非常特殊,会引发程序停止).