黑马程序员_java异常

来源:互联网 发布:破壁机 原汁机 知乎 编辑:程序博客网 时间:2024/05/21 22:51

异常:

异常概述:就是程序在运行时出现的不正常情况,比如除0溢出,文件找不到,数组角标越界等,java通过面向对象的方式来处理异常。


由于问题出现各式各样,对问题进行分类,并不断向上抽取共性内容,如:问题的名称,问题出现的位置,于是就形成了异常体系

 

异常体系

Throwable:可抛出的。 

Error:错误,严重问题,处理不了,基本没救了,要修改代码。

Exception:异常,可以有针对性的处理方式。


RuntimeException 运行期异常,不需要处理,需要修改代码

RuntimeException 编译时异常,需要处理有两种方式


异常的两种处理方式:

方式一:将异常捕获处理

基本格式:

     try

{

        可能发生异常的代码;

        }

catch(异常类名 变量名)

{

        异常的处理代码;

    }

finally{

必须要执行的代码

                     释放资源的代码;

                          }

  finalfinallyfinalize的区别。
         final 是一个关键字可以修饰类,方法,变量


         修饰的类不能被继承


         修饰的方法不能被覆盖


          修饰的变量是常量。
         finally 
           它是异常处理的一部分,finally里面的代码都会被执行


           但是finally也有执行不到的情况比如System.exit(0);退出JVM


         finalize 


           它是Object类中垃圾回收器的方法

 

其他格式:


try{}catch(){}

 

 try{}catch(){}catch(){}...

 

 try{}catch(){}....catch(){}finally{}

 

 try{}finally{}

 

针对多个异常,写一个try的代码,catch里异常类名会不会有顺序问题?


异常是平级关系的话,catch无顺序


异常是具有子父类关系的时候,父类一定要放在最后。


注:功能抛出异常,用try处理,抛出几个异常就用几个catch处理


异常处理中JDK1.7的新特性


理解异常在JDK1.7之后的新特性
格式 :


catch (异常1 | 异常2|异常3...变量名){}
一个catch中可以用或链接多个异常类。


注意:这些异常必须是平级关系。和 try{}catch(){}catch(){}...的不同的地方,JDK1.7的这种方式必须平级关系,不能有子父关系。


方式二:

在方法上抛出异常

修饰符 返回值类型 方法名(参数列表 throws 异常类的 ,其他异常,其他异常2(多个异常用逗号隔开)

{
代码
}

 throw throws的区

throws 抛出的是异常类,后面可以跟多个用逗号隔开,


throw 抛出的是异常对象,用在函数内,


throw抛出了编译时期异常,方法上面必须用throws抛出

throw抛出了运行时期异常,方法上面可以不用throws抛出


自定义异常:就是定义一个类去继承ExceptionRuntimeExcepton.

常见的异常:


NullPointerException空指针异常


IndexOutOfBounds集合越界异常


ClassCastException 类型转换异常


StringIndexOutOfBounds字符串越界异常


ArrayIndexOutOfBound数组角标越界异常


FileNotFoundException文件找不到异常


0 0
原创粉丝点击