黑马程序员_异常
2014-04-23 18:47
218 查看
-----------android培训、java培训、期待与您交流!
------------
1、异常的概念
异常:就是程序在运行时出现的不正常情况。
异常的由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述并封装成对象,即Java对不正常情况进行描述后的对象体现。
异常分类:一种是严重的问题,java通过Error类进行描述。对于Error类一般不编写针对性的代码对其进行处理。另一种是非严重的,java通过Exception类进行描述。对于Exception可以使用针对性的处理方式进行处理。无论Error类或者Exception类都具有一些共性内容。比如:不正常情况的信息,异常引发原因等。
Java.lang.Throwable类是Error类和Exception类的超类。
异常的好处:1、将问题进行封装;2、将正常流程代码和问题代码相分离,方便阅读。
2、异常处理语句。
格式:
try
{ 需要被检测的代码 }
catch(异常类变量)
{ 处理异常的代码;(处理方式)}
finally
{ 一定会执行的语句;}
1.7新特性:
try-with-resources资源的自动回收管理
Java中某些资源是需要手动关闭的,如InputStream、Writer和Sockets等。这个新的语言特性允许try语句本身申请更多的资源(该资源需实现java.lang.AutoCloseable接口和java.io.Closeable接口),这些资源作用于try代码块,并自动关闭。
这个:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
变成了这个:
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
你可以定义关闭多个资源:
try (
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest))
{
// code
}
注意:1、try可与catch或finally组合使用;2、可使用一try多catch语句形式,使用多catch语句时,若异常类型间存在继承关系,要将子类异常语句置前,父类异常语句置后;3、finally常用来释放申请的资源,在一种情况下finally语句不执行,即System;.exit(0),系统结束,JVM退出;4、finally语句严禁返回内容,finally语句在try语句中的return语句执行期间执行,即return先将返回结果放在函数栈,然后执行finally语句后才将返回结果返回给指定变量,若finally语句中使用了return语句,则finally语句中return的返回结果将覆盖try语句中return的返回结果,最终导致返回结果异常。
3、异常声明
用throws关键字对有可能抛出异常的方法和类进行异常声明。
在调用声明异常的方法时,编译器会对异常进行提示,要求处理,提高了安全性。
注意:1、根据编译器是否检查异常,异常又分为检查异常和非检查异常,非检查异常又称为运行时异常,因该类异常发生时程序无法向下继续执行,故可不用在方法和类上对该类异常进行声明;2、声明异常时,建议声明具体的异常类型,可同时声明多个异常,用逗号分隔。
4、异常的处理
对于catch语句捕捉到的异常常有三种处理方式:
1) 对捕获的异常进行处理,不传递任何异常给调用者;
2) 将捕获的异常原样抛出,即将异常传递给调用方法;若调用者一直未处理,默认由JVM处理;
3) 对捕获的异常进行转换,即对原异常处理后,抛出另一类型能被调用者处理的异常。
抛出异常关键字throw,后跟异常类或对象。
注意:throw语句类似return语句具有跳转功能,故throw语句后不能定义其他语句,因为不会被执行。
5、自定义异常
项目中出现的异常未被Java所描述封装,需要自定义所需的异常类型。
超类Throwable类已经定义了异常信息的操作,因而子类只需在构造时,将异常信息传递给父类的构造函数,然后在调用getMessage()方法获取。
自定义异常要点:1、必须是自定义异常类继承Exception,异常具有可抛性,只有Throwable体系中的类和对象才可以被throws和throw操作;2、若自定义的异常发生后会终止程序运行,可让自定义异常类继承Exception类的子类RuntimeException。
6、异常在子类重写父类方法中的原则:
子类重写的方法不能抛出比父类方法更多的异常(即只能不抛异常或抛出父类相同的异常或父类异常的子类)。
------------
1、异常的概念
异常:就是程序在运行时出现的不正常情况。
异常的由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述并封装成对象,即Java对不正常情况进行描述后的对象体现。
异常分类:一种是严重的问题,java通过Error类进行描述。对于Error类一般不编写针对性的代码对其进行处理。另一种是非严重的,java通过Exception类进行描述。对于Exception可以使用针对性的处理方式进行处理。无论Error类或者Exception类都具有一些共性内容。比如:不正常情况的信息,异常引发原因等。
Java.lang.Throwable类是Error类和Exception类的超类。
异常的好处:1、将问题进行封装;2、将正常流程代码和问题代码相分离,方便阅读。
2、异常处理语句。
格式:
try
{ 需要被检测的代码 }
catch(异常类变量)
{ 处理异常的代码;(处理方式)}
finally
{ 一定会执行的语句;}
1.7新特性:
try-with-resources资源的自动回收管理
Java中某些资源是需要手动关闭的,如InputStream、Writer和Sockets等。这个新的语言特性允许try语句本身申请更多的资源(该资源需实现java.lang.AutoCloseable接口和java.io.Closeable接口),这些资源作用于try代码块,并自动关闭。
这个:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
变成了这个:
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
你可以定义关闭多个资源:
try (
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest))
{
// code
}
注意:1、try可与catch或finally组合使用;2、可使用一try多catch语句形式,使用多catch语句时,若异常类型间存在继承关系,要将子类异常语句置前,父类异常语句置后;3、finally常用来释放申请的资源,在一种情况下finally语句不执行,即System;.exit(0),系统结束,JVM退出;4、finally语句严禁返回内容,finally语句在try语句中的return语句执行期间执行,即return先将返回结果放在函数栈,然后执行finally语句后才将返回结果返回给指定变量,若finally语句中使用了return语句,则finally语句中return的返回结果将覆盖try语句中return的返回结果,最终导致返回结果异常。
3、异常声明
用throws关键字对有可能抛出异常的方法和类进行异常声明。
在调用声明异常的方法时,编译器会对异常进行提示,要求处理,提高了安全性。
注意:1、根据编译器是否检查异常,异常又分为检查异常和非检查异常,非检查异常又称为运行时异常,因该类异常发生时程序无法向下继续执行,故可不用在方法和类上对该类异常进行声明;2、声明异常时,建议声明具体的异常类型,可同时声明多个异常,用逗号分隔。
4、异常的处理
对于catch语句捕捉到的异常常有三种处理方式:
1) 对捕获的异常进行处理,不传递任何异常给调用者;
2) 将捕获的异常原样抛出,即将异常传递给调用方法;若调用者一直未处理,默认由JVM处理;
3) 对捕获的异常进行转换,即对原异常处理后,抛出另一类型能被调用者处理的异常。
抛出异常关键字throw,后跟异常类或对象。
注意:throw语句类似return语句具有跳转功能,故throw语句后不能定义其他语句,因为不会被执行。
5、自定义异常
项目中出现的异常未被Java所描述封装,需要自定义所需的异常类型。
超类Throwable类已经定义了异常信息的操作,因而子类只需在构造时,将异常信息传递给父类的构造函数,然后在调用getMessage()方法获取。
自定义异常要点:1、必须是自定义异常类继承Exception,异常具有可抛性,只有Throwable体系中的类和对象才可以被throws和throw操作;2、若自定义的异常发生后会终止程序运行,可让自定义异常类继承Exception类的子类RuntimeException。
6、异常在子类重写父类方法中的原则:
子类重写的方法不能抛出比父类方法更多的异常(即只能不抛异常或抛出父类相同的异常或父类异常的子类)。
相关文章推荐
- 黑马程序员_异常
- 黑马程序员—java面向对象总结(4)—内部类、异常
- 黑马程序员_java中的异常1
- 黑马程序员——7.1.IO(其他对象API(System类、Runtime类、Math类、Date类)字节流与字符流、IO异常处理、缓冲区、键盘录入、转换流、异常日志、流的操作总结)
- 黑马程序员—Java基础---异常体系学习总结
- 黑马程序员—java基础之异常总结
- 黑马程序员--java基础--异常(一)
- 黑马程序员——面向对象之异常
- 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)
- 黑马程序员 Java面向对象——异常
- 黑马程序员——浅析异常
- 黑马程序员_异常架构和异常处理
- 黑马程序员——java第九、十天:面向对象(内部类、异常和包)
- 黑马程序员——基础学习--- Io异常处理方法
- 黑马程序员-----异常
- 黑马程序员_面向对象(异常)
- 黑马程序员--异常finally
- 黑马程序员————异常(day12)
- 黑马程序员_异常
- 黑马程序员---异常