墨烯的Java技术栈-Java基础-005

一.反射

(1)概念

Java反射是指运行时动态获取类信息 并且用这些信息来操作类或者对象等.通过反射

我们可以在运行时获取类的属性,方法,构造函数等信息, 并能动态的创建对象 调用方法 访问并修改并修改字段

反射提供了以下核心类

Class类:代表Java中的类或接口.通过Class类 Constructor类 Method类 Field类等

反射是Java重要的特征之一,它在很多框架和工具被广泛使用,就比如后面常用的Spring框架

(2)反射的原理

Java反射原理基于Java运行时数据区域和类的加载.当Java虚拟机(JVM)加载一个类时,它将字节码文件加载到内存中并且创建一个Class对象来表示类,Class对象中有类的完整信息

(3)反射的应用场景

1)框架和库:很多Java框架和第三库使用反射来实现动态加载.例如,Spring框架就是用反射实现依赖注入和AOP编程(注入和AOP编程后面聊 这里先知道就行)

2)序列化和反序列化:Java序列化和反序列化都使用了反射,因为反射教育在运行时动态查询和修改对象的字段(这点很重要)

3)单元测试:这个就是 测试框架用来发现和执行类的测试方法的

4)动态代理:用反射来实现代理对象的动态创建和方法调用的拦截

(4)反射的注意事项

1)性能开销:这个就是在性能上比普通Java代码开销大 所以如果性能要求很高的程序 应该尽量减少使用反射

2)范围权限:通过反射可以访问和修改类的私有类,这个很容易让程序崩溃 使用前一定要确定访问权限

3)异常处理 使用反射 可能抛出反射的异常 比如ClassNotFoundException 无法找到类这种,尽量根据编译器的提示来处理 

总结:

反射很强 可以在程序运行时动态修改类的信息 甚至在创建对象 调用方法 都不用知道类的具体定义 但是一定要慎重使用 不可过度使用

二.异常

(1)概念

Java中 程序执行发生不正常或者不正确的行为称异常

(2)异常分类

Error:表示严重问题 通常是Java虚拟机或运行环境抛出的 应用程序通常不应该尝试处理这些错误

Excption:表示程序应该处理的异常 主要分为两种

1)Checked Excptions(受检异常): 比如IO异常和SQL异常 这些在编译时要求必须处理,如使用throws子句或者使用try-catch捕获并处理

2)Runtime Excptions(运行时异常):这种异常在编译时被忽略,运行时不需要显式捕获

常见的异常

1)算术异常

2)空索引异常

3)数组超过范围异常

4)编译就会提示的异常

这四个都相对简单 根据提示就可以自行解决 遇到报错不要慌 要以学习的心态对待异常

(3)异常处理关键词

try:用来监听可能抛出异常的代码块

catch:用于捕获并处理try中发生的异常

finally:无论是否有异常 这个都会被执行 通常用来清理缓存

throw:用于手动抛出异常

throws:用在方法签名中,用于声明方法可能抛出的异常

(4)异常处理原则

1)尽量捕获具体的异常类型,而不是使用通用的Exception类型捕获所有异常,以避免丢失有效信息

2)避免在finally块中使用return或者throw等终止方法的语句,防止影响正常传播

3)使用日志记录异常信息,而不是直接printStackTrace(),以便更好地管理和分析日志.

总结:

异常就是要多遇到 多处理 多认识 而不是遇到就害怕 出现异常很正常 每一次的自我处理异常对自身都是提升 并且通过try-catch或者throws可以给Java程序遇到问题时提供可控的错误处理方式

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值