常见的几种RuntimeException

NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常
NegativeArrayException —— 数组负下标异常
ArrayIndexOutOfBoundsException - 数组下标越界异常
EOFException - 文件已结束异常
FileNotFoundException - 文件未找到异常
NumberFormatException - 字符串转换为数字异常
SQLException - 操作数据库异常
IOException - 输入输出异常
NoSuchMethodException - 方法未找到异常
### Java常见的异步处理方法 #### 1. 使用 `CompletableFuture` 进行异步操作 `CompletableFuture` 是 Java 8 引入的一个强大的工具类,用于支持复杂的异步编程场景。它可以轻松地创建并管理异步任务,并提供了多种组合器来简化回调逻辑。 ##### 创建 `CompletableFuture` 的实例 可以使用两种主要的方法来创建 `CompletableFuture` 实例:`supplyAsync` 和 `runAsync`[^1]。 - **`supplyAsync`**: 返回带有计算结果的异步任务。 ```java CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> { return "Hello, CompletableFuture!"; }); ``` - **`runAsync`**: 不返回任何结果的异步任务。 ```java CompletableFuture<Void> completableFuture2 = CompletableFuture.runAsync(() -> System.out.println("Hello World!")); completableFuture2.get(); ``` 这两种方法都可以接受自定义线程池作为参数,从而控制任务运行所在的线程环境[^3]。 ##### 处理异常情况 当异步任务抛出异常时,如果未显式调用 `.get()` 方法,则可能无法捕获到这些异常信息。因此,在实际开发中建议始终结合 `.whenComplete` 或者 `.exceptionally` 来处理潜在错误[^2]。 示例如下: ```java @Test public void testWhenCompleteExceptionally() { CompletableFuture<Double> future = CompletableFuture.supplyAsync(() -> { if (true) { // 模拟条件触发异常 throw new RuntimeException("An error occurred"); } return 0.11; }); future.whenComplete((result, exception) -> { if (exception != null) { System.err.println("Error: " + exception.getMessage()); } else { System.out.println("Result: " + result); } }); } ``` #### 2. 其他异步机制概述 除了 `CompletableFuture`,还有几种常用的异步技术可供选择: - **Fork/Join Framework** 基于工作窃取算法的工作分解框架,适合于 CPU 密集型的任务拆分与合并[^4]。 - **ExecutorService** 提供了一种高级 API 来管理和调度线程池中的任务。虽然它本身并不直接涉及异步模式,但它常被用来配合其他异步库一起使用。 - **Reactor / RxJava** 响应式流模型代表之一,特别适用于高并发下的事件驱动架构设计。相比传统的 Future/Promise 方案更具灵活性和扩展性。 #### 总结 每种异步解决方案都有其适用范围以及局限之处。对于简单的业务需求来说,利用好标准库里的功能即可满足大部分日常编码所需;而对于更复杂或者性能敏感的应用程序而言,则需综合考量具体上下文中各种因素再做决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值