首先区分一下 编译时异常和运行时异常

运行时异常,也就是extends RuntimeException的异常编译时不用try{}catch(){}和throws
编译时异常,也就是extends Exception 的异常需要在调用时try{}catch(){}或throws

下面是测试代码,温馨提示:注意throw和throws的区别,以免出现歧义

package syntax;/*** 异常测试* 运行时异常,也就是extends RuntimeException的异常编译时不用try{}catch(){}和throws* 编译时异常,也就是extends Exception 的异常需要在调用时try{}catch(){}或throws*/
interface I {void mm() throws InterruptedException; // InterruptedException是编译时异常void nn() throws Exception; // Exception本身是编译时异常void rr() throws NullPointerException; // NullPointerException是运行时异常
}
public class II implements I {@Overridepublic void mm() /*throws InterruptedException*/ { System.out.println(1);int a = 1;if(a==1) {// throw new InterruptedException("1");}}@Overridepublic void nn() throws Exception {int a = 1;if(a==1) {throw new Exception("1"); // 编译异常如果在方法实现中throw 编译Exception,则方法定义上必须throws该异常或其父类,否则编译错误}}@Overridepublic void rr() { // 如果抽象方法有throws Exception,覆盖的方法的定义上可以不用 throws Exception, 这一点,编译异常和运行时异常一样int a = 1;if(a==1) {throw new RuntimeException("1"); // 运行时异常如果在方法实现中throw 运行Exception,方法定义上可以不用throws,也能编译通过,这一点于编译时异常相反}}public static void main(String[] args) {I i = new II();try {i.mm();} catch (InterruptedException e) {e.printStackTrace();}try {i.nn();} catch (Exception e) {e.printStackTrace();}i.rr(); // 运行时异常不用try catch 也能编译通过}
}

大鹏激光

java中的编译时异常和运行时异常相关推荐

  1. 浅谈Java异常及其编译时异常和运行时异常的区别

    异常是程序编码和运行时经常发生的事件,了解异常有助于我们提高代码质量,增强系统的健壮性,这里总结一下Java编程中的异常.以及Java编译时异常和运行时异常的区别,并列举几种常见的异常,以供参考学习. ...

  2. 异常---编译时异常和运行时异常:IO异常、NullPointerException、ArrayIndexOutBoundsException、ClassCastExoeption

    一.概述 1.定义: 程序运行过程中的发生了不正常的情况 2.异常处理机制和作用----JVM虚拟机打印的 java语言时很完善的语言,提供了异常处理方式,出现异常,将异常信息打印到输出控制台,供程序 ...

  3. 编译时异常和运行时异常区别

    文章目录 1.编译时异常因为什么而得名 2.编译时异常和运行时异常区别 3.编译时异常还有其他名字 4.运行时异常还有其他名字 5.所有异常都发生在运行阶段的 1.编译时异常因为什么而得名 编译时异常 ...

  4. java 运行 对象_java实例对象的编译时类型和运行时类型

    为什么要区分编译时类型和运行时类型? 看这样一句代码:Person p=new Women()(Women类继承自Person类)那么,假如p的属性修饰符为public 访问属性时得到的是Person ...

  5. 编译时异常和运行时异常的区别

    编译时异常和运行时异常的区别 参考文章: (1)编译时异常和运行时异常的区别 (2)https://www.cnblogs.com/lxl57610/p/6716252.html (3)https:/ ...

  6. 编译时类型和运行时类型到底是什么?

    最近在看多态,里面有一句话困扰了我很久,就是 编译时类型和运行时类型 ps:多态定义:把子类对象直接赋给父类的引用时,当运行时调用该引用类型的方法时,其方法行为总是表现出子类的行为特征,而不是父类的行 ...

  7. C++编译时多态和运行时多态

    C++编译时多态和运行时多态 作者:melonstreet 出处:https://www.cnblogs.com/QG-whz/p/5132745.html 本文版权归作者和博客园共有,欢迎转载,但未 ...

  8. java编译异常和运行时异常_浅谈异常结构图、编译期异常和运行期异常的区别...

    异常处理一般有2种方式,要么捕获异常try-catch,要么抛出异常throws 如果一个方法后面抛出一个运行时期异常(throws RuntimeException),调用者无须处理 如果一个方法后 ...

  9. java面向对象三大特性之多态---编译时多态和运行时多态详解

    一.引言 1.什么是多态? 说到重载和重写,大家可能都知道.它们都是多态性的体现,那么说什么是多态呢?多态是指允许不同子类型的对象对同一行为作出不同的响应.例如在生活中,比如跑的动作,小猫.小狗和大象 ...

最新文章

  1. 大数据小视角3:CarbonData,来自华为的中国力量
  2. 软路由 文件服务器拒绝,软路由踩坑
  3. 为什么要实现序列化接口
  4. 若依(基于SpringBoot的权限管理系统)的快速搭建
  5. cocos2d-x游戏实例(4)-地图碰撞
  6. 机器学习实战的P264中代码对应的公式推导
  7. MySQL在大数据、高并发场景下的SQL语句优化
  8. 工作288:跨组件传值
  9. pyqt5与html数据交互原理,pyqt5与本地html进行js交互
  10. 如何绘制逻辑图 — 6.要素的属性:内聚与解耦
  11. cocos2dx setVisible 与setEnabled 小实例
  12. python怎么定义一个变量为空列表_python – 为什么一个类变量没有在列表理解中定义,但另一个是?...
  13. 传奇修改map地图教程_传奇地图MAP编辑器
  14. php7版本号,discuz的php7版本号
  15. 软考-多媒体基础知识
  16. 合工大计算机系汪教授,合肥工业大学计算机与信息学院导师介绍:洪日昌
  17. C++中定义别名的几种方式总结
  18. 2022年度学习总结
  19. Quantopian教程系列四
  20. UVA - 1198 POJ - 1612 The Geodetic Set Problem (floyd+set+模拟)

热门文章

  1. 深度学习中的sigmod函数、tanh函数、ReLU函数
  2. SQL 查询没有学过“林一”老师的同学的学号、姓名
  3. 搭建SpringBoot项目阶段-groupId和artifactId
  4. 设计模式:Facade模式
  5. vue前端完成头像上传
  6. 上网计算机管理原则,管理总则
  7. Android连载43-网络管理相关分析
  8. Mysql添加用户、修改权限,修改登录权限ip
  9. python实现mock测试
  10. 怎么找回电脑删除的图片