黑马程序员_Java的异常机制及处理方法

---------------------- android培训java培训 、期待与您交流! ----------------------

 

 

 

 

异常就是程序在运行时出现的不正常情况.

异常的由来.问题也是现实生活中一个具体的事物,也可以通过JAVA的类的形式进行描述,瓶封装成对象.

              其实就是JAVA对不正常情况进行描述后的对象体现.

对于问题的划分,分两种,:一种是严重的问题,一种是非严重的.

对严重的,JAVA通过ERROR类进行描述,

对于Error一般不编写针对性的代码对其进行处理.

对于非严重的JAVA通过Exception类进行描述.对于 Exception可以全县针对性的处理方式处理.

 

1.       异常的处理.

java提供了特有的语句进行处理.

try

{

        需要被检测的代码.

}

catch(异常类 变量)

{

        处理异常的代码(处理方式)

}

finally

{

        一定会执行的语句.

}

 

throws Exception//在功能上通过throws的了声明了该功能有可能会出现的问题.

 

异常:

是什么?是对问题的描述.将问题进行对象的封装.

异常体系:

   Throwable

又分为ErrorException

其中ExceptionRuntimeException比较特殊.

异常体系特点:

异常体系中所有类以及建立的对象都具备可抛性.\

也就是说可以被throwthrows关键字所操作.

 

throwsthrow的区别,

throws使用在函数上,throw使用在函数内.

throws后面跟异常类.可以跟多个,用逗号隔开.

throw后跟的是异常对象.

 

RuntimeException运行时异常

在函数内抛出该异常,函数上可以不用声明的,编译一样通过

如果在函数上声明了该异常.调用者可以不用进行处理.编译一样通过.

 

自定义异常extends Exception

因为父类中已经把异常信息的操作都完成了,所以子类只要在构造时,将异常信息传递给父类通过super语句.那么就可以直接通过getMessage 方法获取定义异常信息.

自定义异常时:如果该异常的发生,无法在继续进行运算.就让自定义异常继承RuntimeException

当要定义自定义异常的信息时,可以使用父类已经定义好的功能,异常信息传递给父类的构造函数.

class MyException extends Exception

{

        MyException(String  message)

        {

               super(message);

        }

}

 

异常处理能让正常流程代码和问题代码分离.

对多异常处理:

  1. 声明异常时,建议声明更为具体的异常,这样处理更加方便和处理的更具体.
  2. 对方声明了几个异常,就对应有几个catch.不要定义多余的catch.如果多个catch 块中的异常出来继承关系,父类异常catch块放在最下面.

 

对于异常分两种.

  1. 编译时被检测的异常
  2. 编译时不被检测的异常(运行时异常,就是RuntimeException以及其子类).

 

 

finlly代码块:定义一定执行的代码,通常用于关闭资源.

 

当函数内容有throw异常对象,并末进行try处理.必须要在函数上声明.否则编译失败.

注意,RuntimeException除外,也就说如果函数内抛出RuntimeException异常,函数上可以不用声明.

如果函数声明了异常,调用者需要进行处理.处理方法可以throws 可以try.

异常有两种

1.       编译时被检测异常.

a)         该异常在编译时如果没有处理.那么编译失败,

b)        该异常被标识,代表这可以被处理

2.       运行时异常(编译时不检测).

a)         在编译时,不需要处理,编译器不检查.

b)        该异常的发生,建议不处理,让程序停止,需要对代码进行修正.

异常处理的三种格式.trycatchfinally第二种trycatch,第三种tryfinally

System.exit(0); 系统退出,jvm结束.

 

多个 catch,父类的catch放到最下面.

 

如果该异常处理不了,但并不属于该功能出现的异常.

可以将异常转换后,在抛出和该功能相关的异常.

或者异常可以处理.当需要将异常产生的和本功能相关的问题提供出去,让调用者知道,并且处理.也可以捕获异常处理后转换新的异常抛出.

 

异常在子父类覆盖中的体现:

1.       子类在覆盖父类时,如果父类的方法抛出了异常,那么子类的覆盖方法,只能抛出父类的异常或者父类异常的子类或者不抛.

2.       如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集.

3.       如果父类或者接口方法中没有抛出异常,那么子类在覆盖方法时,也不可以抛出异常,只能处理.

 

异常的好处:

1.       将问题进行封闭.

2.       将正常流程代码和问题代码相分离,方便于阅读.

 

被不同的修饰符修饰后在不同的目的地访问权限总结:

 

                                   public             protected        default            private

同一个类中                  可以              可以              可以              可以

同一个包中                  可以              可以              可以              不可以

子类中                         可以              可以                               

不同包中                     可以                                                 

 

 

 

 

 

 

---------------------- android培训java培训 、期待与您交流! ----------------------

你可能感兴趣的:(黑马程序员_Java的异常机制及处理方法)