Java异常处理-----非运行时异常(受检异常)
2016-07-24 17:08
615 查看
非运行时异常(受检异常)
如果出现了非运行时异常必须进行处理throw或者try{}catch(){}处理,否则编译器报错。
1;IOException 使用要导入包import java.io.IOException;
4:Sun 的API文档中的函数上声明异常,那么该异常是非运行是异常,调用者必须处理。
5:自定义异常一般情况下声明为非运行时异常
1:函数发生了重写,因为是运行时异常,在父类的test方法中,可以声明throws 也可以不声明
2:非运行时异常
1:定义父类的test2方法,抛出非运行时异常,例如抛出ClassNotFoundException
1:此时父类test2方法必须声明异常,因为是非运行时异常
2:Son类定义test2 方法,抛出和父类一样的异常,声明异常
3:使用多态创建子类对象,调用test方法,调用test2方法,
1:声明非运行时异常的方法,在调用时需要处理,所以在main方法调用时throws
2:实现了重写,执行子类的test2方法
3:总结子类重写父类方法可以抛出和父类一样的异常,或者不抛出异常。
3:总结
1:子类覆盖父类方法是,父类方法抛出异常,子类的覆盖方法可以不抛出异常,或者抛出父类方法的异常,或者该父类方法异常的子类。
2:父类方法抛出了多个异常,子类覆盖方法时,只能抛出父类异常的子集
3:父类没有抛出异常子类不可抛出异常
1:子类发生非运行时异常,需要进行try{}catch的(){}处理,不能抛出。
4:子类不能比父类抛出更多的异常
【正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下面有个“顶”字,你就顺手把它点了吧(要先登录CSDN账号哦 )】
如果出现了非运行时异常必须进行处理throw或者try{}catch(){}处理,否则编译器报错。
1;IOException 使用要导入包import java.io.IOException;
3:案例 1:定义一测试方法抛出并声明ClassNotFoundException(test()) 2:main方法调用test 3:编译报错 1:未报告的异常 java.lang.ClassNotFoundException;必须对其进行捕捉或声明以便抛出
public void isFile(String path){ try { /* 根据文件的路径生成一个文件对象,如果根据该路径找不到相应的文件, 则没法生成文件对象。 */ File file = new File(path); //读取文件的输入流 FileInputStream input = new FileInputStream(file); //读取文件 input.read(); } catch (NullPointerException e) { System.out.println("读取默认的文件路径.."); } }
4:Sun 的API文档中的函数上声明异常,那么该异常是非运行是异常,调用者必须处理。
5:自定义异常一般情况下声明为非运行时异常
2:函数的重写和异常 1:运行时异常 1:案例定义Father类,定义功能抛出运行是异常,例如(test() throw ClassCastException) 2:定义Son类,继承Father类,定义test方法,没有声明异常 3:使用多态创建子类对象,调用test方法 4:执行子类方法
1:函数发生了重写,因为是运行时异常,在父类的test方法中,可以声明throws 也可以不声明
throws class Father { void test() throws ClassCastException { // 运行时异常 System.out.println("父类"); throw new ClassCastException(); } } class Son extends Father { void test() { System.out.println("子类"); } } class Demo14 { public static void main(String[] args) { Father f = new Son(); f.test(); } }
2:非运行时异常
1:定义父类的test2方法,抛出非运行时异常,例如抛出ClassNotFoundException
1:此时父类test2方法必须声明异常,因为是非运行时异常
2:Son类定义test2 方法,抛出和父类一样的异常,声明异常
3:使用多态创建子类对象,调用test方法,调用test2方法,
1:声明非运行时异常的方法,在调用时需要处理,所以在main方法调用时throws
2:实现了重写,执行子类的test2方法
3:总结子类重写父类方法可以抛出和父类一样的异常,或者不抛出异常。
// 1 子类覆盖父类方法父类方法抛出异常,子类的覆盖方法可以不抛出异常 class Father { void test() throws ClassNotFoundException { // 非运行时异常 System.out.println("父类"); throw new ClassNotFoundException(); } } class Son extends Father { void test() { System.out.println("子类"); // 父类方法有异常,子类没有。 } } class Demo14 { public static void main(String[] args) throws ClassNotFoundException { Father f = new Son(); f.test(); } }
4:子类抛出并声明比父类大的异常例如子类test2方法抛出Exception 1:编译失败,无法覆盖 2:子类不能抛出父类异常的父类。 3:总结子类不能抛出比父类的异常更大的异常。
//2:子类覆盖父类方法不能比父类抛出更大异常 class Father { void test() throws Exception { // 非运行时异常 System.out.println("父类"); throw new Exception(); } } class Son extends Father { void test() throws ClassNotFoundException { // 非运行时异常 System.out.println("子类"); throw new ClassNotFoundException(); } } class Demo14 { public static void main(String[] args) throws Exception { Father f = new Son(); f.test(); } }
3:总结
1:子类覆盖父类方法是,父类方法抛出异常,子类的覆盖方法可以不抛出异常,或者抛出父类方法的异常,或者该父类方法异常的子类。
2:父类方法抛出了多个异常,子类覆盖方法时,只能抛出父类异常的子集
3:父类没有抛出异常子类不可抛出异常
1:子类发生非运行时异常,需要进行try{}catch的(){}处理,不能抛出。
4:子类不能比父类抛出更多的异常
【正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下面有个“顶”字,你就顺手把它点了吧(要先登录CSDN账号哦 )】
相关文章推荐
- JavaSE 高级 第05节 日期类与格式化
- OpenSessionInViewFilter cannot be cast to javax.servlet.Filter问题
- Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究
- IO流以日志文件记录异常
- 深入浅出看流媒体前世今生,分分钟二逼变牛逼
- Java异常处理-----运行时异常(RuntimeException)
- Java异常处理-----运行时异常(RuntimeException)
- Java的基础知识1
- JavaSE 高级 第03节 Math类与猜数字游戏
- java构造器的作用
- Java异常处理-----自定义异常
- Java异常处理-----自定义异常
- SpringMVC学习之路
- 转载 《Struts2返回JSON数据的具体应用范例》
- Java CountDownLatch 和 CyclicBarrier 使用
- Java异常处理-----抛出处理
- Java异常处理-----抛出处理
- 使用eclipse自带插件生产WebService客户端代码
- 运行Eclipse出错:Failed to load the JNI shared library
- Java8 Spliterator 接口 原理