1、Java中异常分为哪两种?

编译时异常

运行时异常

2、异常的处理机制有几种?

异常捕捉:try…catch…finally,异常抛出:throws。

3、如何自定义一个异常

继承一个异常类,通常是RumtimeException或者Exception

4、try catch fifinally,try里有return,finally还执行么?

执行,并且finally的执行早于try里面的return

结论:

1.不管有木有出现异常,finally块中代码都会执行;

2.当try和catch中有return时,finally仍然会执行;

3.finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;

4.finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

5、 Excption与Error包结构

Java可抛出(Throwable)的结构分为三种类型:被检查的异常(CheckedException),运行时异常

(RuntimeException),错误(Error)。

1.运行时异常

定义:RuntimeException及其子类都被称为运行时异常。

特点:Java编译器不会检查它。也就是说,当程序中可能出现这类异常时,倘若既"没有通过throws声明抛出它",也"没有用try-catch语句捕获它",还是会编译通过。例如,除数为零时产生的ArithmeticException异常,数组越界时产生的IndexOutOfBoundsException异常,failfast机制产生的ConcurrentModi?cationException异常(java.util包下面的所有的集合类都是快速失败的,“快速失败”也就是fail-fast,它是Java集合的一种错误检测机制。当多个线程对集合进行结构上的改变的操作时,有可能会产生fail-fast机制。记住是有可能,而不是一定。

例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简单的修改集合元素的内容),那么这个时候程序就会抛出ConcurrentModi?cationException异常,从而产生fail-fast机制,这个错叫并发修改异常。Fail-safe,java.util.concurrent包下面的所有的类都是安全失败的,在遍历过程中,如果已经遍历的数组上的内容变化了,迭代器不会抛出

ConcurrentModi?cationException异常。如果未遍历的数组上的内容发生了变化,则有可能反映到迭代过程中。这就是ConcurrentHashMap迭代器弱一致的表现。ConcurrentHashMap的弱一致性主要是为了提升效率,是一致性与效率之间的一种权衡。要成为强一致性,就得到处使用锁,甚至是全局锁,这就与Hashtable和同步的HashMap一样了。)等,都属于运行时异常。

常见的五种运行时异常:

ClassCastException(类转换异常)

IndexOutOfBoundsException(数组越界)

NullPointerException(空指针异常)

ArrayStoreException(数据存储异常,操作数组是类型不一致)

Bu?erOver?owException

2.被检查异常

定义:Exception类本身,以及Exception的子类中除了"运行时异常"之外的其它子类都属于被检查异常。特点 : Java编译器会检查它。此类异常,要么通过throws进行声明抛出,要么通过try-catch进行捕获处理,否则不能通过编译。例如,CloneNotSupportedException就属于被

检查异常。当通过clone()接口去克隆一个对象,而该对象对应的类没有实现Cloneable接口,就会抛出CloneNotSupportedException异常。被检查异常通常都是可以恢复的。

如:

IOException

FileNotFoundException

SQLException

被检查的异常适用于那些不是因程序引起的错误情况,比如:读取文件时文件不存在引发的FileNotFoundException 。然而,不被检查的异

常通常都是由于糟糕的编程引起的,比如:在对象引用时没有确保对象非空而引起的 NullPointerException 。

3.错误

定义 : Error类及其子类。

特点 : 和运行时异常一样,编译器也不会对错误进行检查。当资源不足、约束失败、或是其它程序无法继续运行的条件发生时,就产生错误。程序本身无法修复这些错误的。例如,VirtualMachineError就属于错误。出现这种错误会导致程序终止运行。OutOfMemoryError、ThreadDeath。

Java虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等

6、Thow与thorws区别

位置不同

throws 用在函数上,后面跟的是异常类,可以跟多个;而 throw 用在函数内,后面跟的

是异常对象。

功能不同

2. throws 用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方

式;throw 抛出具体的问题对象,执行到 throw,功能就已经结束了,跳转到调用者,并

将具体的问题对象抛给调用者。也就是说 throw 语句独立存在时,下面不要定义其他语

句,因为执行不到。

3. throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw 则是抛出了异常,

执行 throw 则一定抛出了某种异常对象。

4. 两者都是消极处理异常的方式,只是抛出或者可能抛出异常,但是不会由函数去处理异

常,真正的处理异常由函数的上层调用处理。

7、Error与Exception区别?

Error和Exception都是java错误处理机制的一部分,都继承了Throwable类。

Exception表示的异常,异常可以通过程序来捕捉,或者优化程序来避免。

Error表示的是系统错误,不能通过程序来进行错误处理。

8、error和exception有什么区别

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况 exception 表示一种设

计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

面试题不断更新,欢迎关注微信公众号【慕容千语】

面试常见java异常题_Java异常面试题(含答案)相关推荐

  1. java基础考试_Java语言基础试题及答案

    Java语言基础试题及答案 引导语:Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.以下是小编整理的Java语言基础试题及答案,欢迎参考阅读! 1.浮点型数据根据数据存储长度和数值精度的 ...

  2. java概念题_JAVA 概念笔试题

    1.分别写出分支结构,循环结构的语法格式.循环结构:while 循环 [html] view plaincopy(init_statement); while (test_expression) { ...

  3. 专科java程序设计试卷_java程序设计试卷(含答案)

    ----------------密----------------封----------------线----------------- 年级: 层次: 专业: 学号: 姓名: 2015年春季学期 & ...

  4. 研发工程师笔试c语言题,研发工程师面试题(含答案)

    1.三个程序a,b,c,它们使用同一个设备进行I/O操作,并按a,b,c的优先级执行(a优先级高,c低).这三个程序的计算和I/O时间如下图所示.假设调度的时间可忽略.则在单道程序环境和多道程序环境下 ...

  5. java 字符串乱码_这份Java面试题含答案解析竟然真的让你不用在面试上“如履薄冰”...

    面试题集共分为以下十部分: 一.Core Java: 1 - 95 题1 - 24 页 基础及语法: 1 - 61 题1 - 13 页 异常: 62 - 69 题13 - 15 页 集合: 70 - ...

  6. java语言程序设计考题_《JAVA语言程序设计》期末考试试题及答案6(应考必备题库)...

    <JAVA语言程序设计>期末考试试题及答案6(应考必备题库) 一.填空题 1.定义类的保留字是( class ),定义接口的保留字是( interface ). 2.Socket通常也称为 ...

  7. 《JAVA语言程序设计》期末考试试题及答案

    文章目录 <JAVA语言程序设计>期末考试试题及答案1(应考必备题库) 一.单选择题 二.填空题 三.写出下面程序的运行结果 <JAVA语言程序设计>期末考试试题及答案2(应考 ...

  8. Java并发编程71道面试题及答案

    Java并发编程71道面试题及答案 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方 ...

  9. Java并发编程75道面试题及答案

    1.在java中守护线程和本地线程区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User).任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bo ...

最新文章

  1. 100多次竞赛后,他研发了一个几乎可以解决所有机器学习问题的框架
  2. ACMNO.22 C语言-公约公倍2 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 输入 两个数 输出 最大公约数 最小公倍数
  3. 西南大学网络教育计算机辅助设计,2017年秋西南大学继续教育9123《计算机辅助设计》.docx...
  4. [译]ES6新特性:八进制和二进制整数字面量
  5. ASP.NET 开发小技巧 (持续更新)
  6. java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
  7. python 数据处理----读取txt 一列数据写入excel 文件
  8. android 键盘 自动消失,android 软键盘 回到键 消失事件 监听
  9. 项目质量管理--如何保证项目的质量
  10. 安装oracle后电脑无法启动,求救,Oracle11g安装成功后,总是无法启动
  11. Nodejs express 获取url参数,post参数的三种方式
  12. SOP 中的 Service
  13. 号称有效期至2017年的 ESET Nod32 “付费”许可证,只要能用一年就行了
  14. MyBatis 缓存原理梳理
  15. 关于springboot自动注入出现Consider defining a bean of type 'xxx' in your configuration问题解决方案...
  16. Uber天使投资人杰森卡拉卡尼斯投资…
  17. html页面打印a4尺寸,html网页打印A4样式
  18. 非线性编辑系统的选购
  19. 镶嵌数据集工具小结(八)色彩平衡与接缝线 Ⅱ
  20. 安利一下断言利器AssertJ

热门文章

  1. 12345组成三个不重复数java,求大神帮忙!五子棋!只能识别按顺序识别!例如 12345 不能...
  2. python爬虫反爬 css 知乎 专栏_反反爬虫系列(四)
  3. lnmp构架——对tomcat详解
  4. lol最克制诺手的英雄_LOL:究竟有没有完美克制诺手的英雄?时光上单或可一战?...
  5. mysql 下载到其他盘中_MYSQL 如果把数据文件保存到其他磁盘里
  6. ruby 新建对象_Ruby中的面向对象编程
  7. java 方法 示例_Java集合asLifoQueue()方法和示例
  8. 阅读源码的 4 个绝技,我必须分享给你!
  9. 解决exe文件在别人电脑上运行缺失文件情况
  10. 重置mariadb密码