面试章—异常和反射(五分钟快速搞定面试)

简介: error表示系统级别的错误,是java运行环境内部错误或者是硬件问题,不能指望程序来处理这里的问题,除了退出运行外别无选择,它是java虚拟机抛出的

四、异常和反射


4.1、异常


4.1.1、error和exception的区别


error表示系统级别的错误,是java运行环境内部错误或者是硬件问题,不能指望程序来处理这里的问题,除了退出运行外别无选择,它是java虚拟机抛出的


exception表示程序需要捕捉,处理的异常,是由程序设计的不完善而出现的问题,程序必须处理的问题


4.1.2、常见的RuntimeException


  1. Java.lang.NullPointerException空指针异常:调用了未经初始化的对象或者是不存在的对象
  2. Java.lang.NumberFormatException字符串转换为数字异常:字符型数据中包含非数字型字符
  3. Java.lang.IndexOutOfBoundsException数组角标越界异常:常见于操作数组对象时发生
  4. Java.lang.IllegalArgumentException方法传递参数错误
  5. java.lang.ClassCastExceotion:数据类型转换异常
  6. FileNotFoundException文件未找到异常
  7. NoSuchMethodException 方法不存在异常
  8. IOException IO 异常


4.1.3、如何自定义异常


继承Exception是检查性异常,继承RuntimeException是非检查性异常,一般要复写两个 构造方法,用throw抛出新异常


如果同时有很多异常抛出,那可能就是异常链,就是一个异常引发另一个异常,另一个异常引发更多异常,一般我们会找它的原始异常来解决问题,一般会在开头或结尾,异常可通过initCause串起来,可以通过自定义异常


4.1.4、Java中异常处理


首先处理异常主要有两种方式,一种try-catch,一种是throws


  1. try-catch:

try{}中放入可能发生异常的代码,catch{}中放入对捕获到异常之后的处理

  1. throw,throws:
  • throw是语句抛出异常,出现于函数内部,用来抛出-一个具体异常实例,throw被执行 后面的语句不起作用,直接转入异常处理阶段。
  • throws是函数方法抛出异常,一般写在方法的头部,抛出异常,给方法的调用者进行解决


4.2、反射


4.2.1、什么是Java反射机制


Java的反射(reflection)机制是指在程序运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法,这种动态获取程序信息以及调用对象的功能成为Java语言的反射机制


4.2.2、举例什么地方用到反射机制


  • JDBC中,利用反射动态加载了数据库驱动程序
  • Web服务器中利用反射调用了Servlet的服务方法
  • Spring的注入属性


4.2.3、Java反射机制的作用


  • 在运行时判定任意一个对象所属的类
  • 在运行时构造任意一个类的对象
  • 在运行时判定任意一个类所具有的成员变量和方法
  • 在运行时调用任意一个对象的方法
  • 生成动态代理


4.2.4、Java反射机制类


java.lang.Class   //类
java.lang.reflect.Constructor  //构造方法
java.lang.reflect.Field   //类的成员变量
java.lang.reflect.Method   //类的方法
java.lang.reflect.Modifier  //访问权限
复制代码


4.2.5、反射机制的优缺点


  • 优点:运行期类型的判断,动态加载类,提高代码的灵活度
  • 缺点:反射相当于一系列解释操作,通知JVM要做的事情,性能比直接的Java代码要慢很多


相关文章
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
2月前
|
消息中间件 前端开发 NoSQL
面试官:线程池遇到未处理的异常会崩溃吗?
面试官:线程池遇到未处理的异常会崩溃吗?
73 3
面试官:线程池遇到未处理的异常会崩溃吗?
|
3月前
|
Java
【Java基础面试三十八】、请介绍Java的异常接口
这篇文章介绍了Java的异常体系结构,主要讲述了Throwable作为异常的顶层父类,以及其子类Error和Exception的区别和处理方式。
|
3月前
|
Java 数据库连接
【Java基础面试三十六】、遇到过异常吗,如何处理?
这篇文章介绍了Java中处理异常的三个步骤:捕获异常、处理异常(记录日志、根据异常类型和业务情况处理)、以及回收资源(在finally块中关闭资源)。
|
3月前
|
Java 编译器 程序员
Java面试题-异常
Java面试题-异常
47 6
|
4月前
|
存储 运维 前端开发
Java面试题:什么是Java的异常处理机制?列举常见的异常类,并说明使用场景
Java面试题:什么是Java的异常处理机制?列举常见的异常类,并说明使用场景
52 0
|
4月前
|
Java 编译器 程序员
Java面试题:解释Java中的异常处理机制,包括checked异常和unchecked异常的区别。
Java面试题:解释Java中的异常处理机制,包括checked异常和unchecked异常的区别。
34 0
|
6月前
|
开发框架 安全 .NET
C# .NET面试系列三:集合、异常、泛型、LINQ、委托、EF!
<h2>集合、异常、泛型、LINQ、委托、EF! #### 1. IList 接口与 List 的区别是什么? IList 接口和 List 类是C#中集合的两个相关但不同的概念。下面是它们的主要区别: <b>IList 接口</b> IList 接口是C#中定义的一个泛型接口,位于 System.Collections 命名空间。它派生自 ICollection 接口,定义了一个可以通过索引访问的有序集合。 ```c# IList 接口包含一系列索引化的属性和方法,允许按索引访问、插入、移除元素等。 由于是接口,它只定义了成员的契约,而不提供具体的实现。类似于 IEnumera
345 2
|
6月前
|
设计模式 安全 Java
面试官:说说反射的底层实现原理?
面试官:说说反射的底层实现原理?
92 0
|
6月前
|
安全 IDE Java
【2024java面试题无需C币下载】终结空指针异常:Java开发者的生存指南
【2024java面试题无需C币下载】终结空指针异常:Java开发者的生存指南
80 1