非运行时异常(受检异常)

如果出现了非运行时异常必须进行处理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账号哦 )】


—–乐于分享,共同进步!

—–更多文章请看:http://blog.csdn.net/duruiqi_fx


Java异常处理-----非运行时异常(受检异常)的更多相关文章

  1. java 运行时异常与非运行时异常理解

    参考:https://blog.csdn.net/lan12334321234/article/details/70049446 所谓的异常就是阻止当前程序或方法继续执行的问题 java异常分为两种: ...

  2. Java运行时异常和非运行时异常

    1.Java异常机制 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类.Java中的异常分为两大类:错误Error和异常Exception,Java ...

  3. Java检查异常、非检查异常、运行时异常、非运行时异常的区别

    Java把所有的非正常情况分为两种:异常(Exception)和错误(Error),它们都继承Throwable父类. Java的异常(Exception和Error)分为检查异常和非检查的异常. 其 ...

  4. Java检查异常和非检查异常,运行时异常和非运行时异常的区别

    通常,Java的异常(包括Exception和Error)分为检查异常(checked exceptions)和非检查的异常(unchecked exceptions).其中根据Exception异常 ...

  5. Java运行时异常与非运行时异常

    Java运行时异常与非运行时异常 Exception(异常)是程序本身可以处理的异常.主要包含RuntimeException等运行时异常和IOException,SQLException等非运行时异 ...

  6. Java如何在运行时识别类型信息?

    在日常的学习工作当中,有一些知识是我们在读书的时候就能够习得:但有一些知识不是的,需要在实践的时候才能得到真知——这或许就是王阳明提倡的“知行合一”. 在Java中,并不是所有的类型信息都能在编译阶段 ...

  7. java虚拟机规范-运行时栈帧

    前言 java虚拟机是java跨平台的基石,本文的描述以jdk7.0为准,其他版本可能会有一些微调. 引用 java虚拟机规范 java虚拟机规范-运行时数据区 java内存运行时的栈帧结构 java ...

  8. Java中运行时异常和非运行时异常什么鬼?

    Java中的异常分类 RuntimeException(也称unchecked exceptions,运行时异常) 就是我们在开发中测试功能时程序终止,控制台出现的异常.(一般来说,出现运行时异常基本 ...

  9. java异常处理 throw RuntimeException时不需要同时方法中声明抛出throws 异常等待调用者catch进行捕获 子父类异常问题

    package com.swift.exception1; public class Demo_Exception { public static void main(String[] args) { ...

随机推荐

  1. C#利用微软企业库Enterprise Library配置mysql数据库

    在C#项目中,很多时候到要用到Enterprise Library.这里只是用一个很简单的小例子来演示一下Enterprise Library在VS2010中操作MySQL数据库的流程. 1,利用En ...

  2. 从三个开源项目认识OpenFlow交换机 - OVS

    在SDN/NFV的网络革新技术浪潮的引领下,催生了诸多数据面开源方案的诞生.业界知名度较高的有OVS(Open vSwitch).FD.io (Fast Data I/O).ODP(Open Data ...

  3. 深入java多线程一

    涉及到 1.线程的启动(start) 2.线程的暂停(suspend()和resume()) 3.线程的停止(interrupt与异常停止,interrupt与睡眠中停止,stop(),return) ...

  4. 机器学习技法:13 Deep Learning

    Roadmap Deep Neural Network Autoencoder Denoising Autoencoder Principal Component Analysis Summary

  5. spring mvc中的注解说明

    注解扫描 context:component-scan 包扫描 <context:component-scan base-package="org.bdp"> < ...

  6. LOJ #6041. 事情的相似度

    Description 人的一生不仅要靠自我奋斗,还要考虑到历史的行程. 历史的行程可以抽象成一个 01 串,作为一个年纪比较大的人,你希望从历史的行程中获得一些姿势. 你发现在历史的不同时刻,不断的 ...

  7. 计蒜客NOIP2017提高组模拟赛(五)day2-蚂蚁搬家

    传送门 这题可以用线段树来维护 #include<cstdio> #include<cstdlib> #include<algorithm> #include< ...

  8. bzoj1433

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3371  Solved: 1425[Submit][Sta ...

  9. Python基础学习(第三周)

    集合的操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之间的交集,差集,并集等关系 集合的写法 list_1 = set([ ...

  10. Python中高阶函数讲解

    高阶函数讲解 1. 常规高阶函数 递归函数 格式:def func_name(variable): '''__doc__'''#函数的说明文档 if 条件表达式:#限制递归退出值 pass retur ...