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

举报
XiaoLin_Java 发表于 2022/03/27 21:07:49 2022/03/27
【摘要】 四、异常和反射 4.1、异常 4.1.1、error和exception的区别​ error表示系统级别的错误,是java运行环境内部错误或者是硬件问题,不能指望程序来处理这里的问题,除了退出运行外别无选择,它是java虚拟机抛出的​ exception表示程序需要捕捉,处理的异常,是由程序设计的不完善而出现的问题,程序必须处理的问题 4.1.2、常见的RuntimeExceptionJa...

四、异常和反射

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代码要慢很多
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。