栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

异常面试总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

异常面试总结

一、异常
  1. 什么是异常

    java中提供的一种识别及响应错误的一致性机制
    
  2. Error和Exception的区别

    Errror是程序正常运行中,不大可能出现的错误,
    通常是虚拟机相关错误,如系统崩溃,堆栈溢出等,
    编译器不会对这类错误进行检测,应用程序也不应对这类错误进行捕获,
    一旦这类错误发生,应用程序会被禁止且靠应用程序本身无法恢复
    
    Exception是程序正常运行中,可以预料的意外情况,
    通常遇到这种异常,应对其进行处理,使应用程序可以继续正常运行
    
  3. 什么是运行时异常,编译时异常

    Exception可以分为两类:运行时异常和编译时异常
    
    运行时异常:(属于非受检异常)
    		定义:RuntimeException类及其子类
    		特点:java编译器不会检查它,即使没有抛出或捕获,也会编译通过,
    			 如空指针异常,数组下标越界异常,类型转换异常等,一般由程序逻辑错误引起,
    			 需要修改代码来进行避免
    
    编译时异常:
    		定义:Exception中除RuntimeException类及其子类以外的异常
    		特点:java编译器会检查它,通常要通过throws进行声明抛出或通过try-catch进行捕获处理,
    		     否则不能编译通过
    
  4. 什么是受检异常和非受检异常

    受检异常:编译器必须处理的异常,通过throws抛出或通过try-catch捕获处理,否则编译不通过
     	    (包括Exception中除RuntimeException类及其子类以外的异常)
     	    
    非受检异常:编译器不会进行检查且不要求必须处理的异常,
              即使不使用throws抛出或try-catch捕获也会编译通过
    	 	 (包括RuntimeException类及其子类和错误(Error))
    
  5. 如何选择异常类型

    					    可以解决---------捕获异常
    是否解决不了某些异常问题:
    												          必须处理---声明受检异常
    						解决不了---------调用者是否必须处理
    						                                  不是必须处理---抛出运行时异常(非受检异常)
    
  6. throw和throws的区别是什么

    1. throw关键字用在方法内部,只能用于抛出一种异常,用来抛出方法或代码块中的异常
    
    2. throws关键字用于方法声明上,可以抛出多个异常,用来标识该方法可能抛出的异常列表
    
  7. try-catch-finally中,如果catch中return了,finally还会执行吗

    会,在return前执行
    
  8. Java常见异常有哪些

    Error:
    		java.lang.OutofMemoryError:内存不足异常
    		java.lang.StackOverflowError:堆栈溢出异常
    		
    Exception:
    		IOException:IO异常
    		
    RuntimeException:
    		NullPointerException:空指针异常
    		ClasslastException:类转换异常
    		IndexOutofBoundsException:索引越界异常
    
  9. 什么是NoClassDefFoundError

    Java尝试加载类的时候找不到类的定义,要查找的类在编译时存在,运行时却找不到了,
    就会导致NoClassDefFoundError
    
    原因: 打包过程漏掉了部分了类或jar包出现损坏或者篡改
    
    解决:查找那些开发期间存在于类路径下但运行期间却不在类路径下的类
    
  10. 什么是ClassNotFoundException

    Java使用反射在运行是动态加载类,如果该类在类路径没有被找到就会报该异常,
    通常都是类名书写错误
    或当一个类已经被某个类加载器加载到内存中,此时另一个类加载器又尝试着动态的从同一个包中加载这个类,
    通过控制动态类加载过程可以避免
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821693.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号