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

如果出现了非运行时异常必须进行处理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. drupal 8 查看数据库用户名密码

    一.查看网站数据库名.密码 在已安装网站下 例如:我安装了一个d8radix的网站,此网站/home/jx/www/d8radix/sites/default/setting.php文件里面 数据库名 ...

  2. Leetcode 804. Unique Morse Code Words 莫尔斯电码重复问题

    参考:https://blog.csdn.net/yuweiming70/article/details/79684433 题目描述: International Morse Code defines ...

  3. [LeetCode] Baseball Game 棒球游戏

    You're now a baseball game point recorder. Given a list of strings, each string can be one of the 4 ...

  4. [NOI 2009]变换序列

    Description 题库链接 对于 \(N\) 个整数 \(0, 1, \cdots, N-1\) ,一个变换序列 \(T\) 可以将 \(i\) 变成 \(T_i\) ,其中 \(T_i \in ...

  5. [TJOI2017]可乐

    题目描述 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的1号城市上.这个可乐机器人有三种行为: 停在原地,去下一个相邻的城市,自爆.它每一秒都会随机 ...

  6. bzoj 2560: 串珠子

    Description 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不 ...

  7. APIO 2015

    老师让我们打这套题练练手.感觉这套题还是挺有意思的,比国内某些比赛不知道高到哪里去.最后我拿了284/300,貌似比赛是IOI赛制啊,强行被当成OI赛制做了,不然我T3可能还能多骗点. T1.scul ...

  8. SPOJ PHRASES 每个字符串至少出现两次且不重叠的最长子串

    Description You are the King of Byteland. Your agents have just intercepted a batch of encrypted ene ...

  9. SpringMvc+Spring+MyBatis 基于注解整合

    最近在给学生们讲Spring+Mybatis整合,根据有的学生反映还是基于注解实现整合便于理解,毕竟在先前的工作中团队里还没有人完全舍弃配置文件进行项目开发,由于这两个原因,我索性参考spring官方 ...

  10. localStorage存储数组以及取数组方法

    var weekArray = ['周一'.'周二'.'周三'.'周四'.'周五']; //存: localStorage.setItem('weekDay',JSON.stringify(weekA ...