请列出 ApiException 的三个常见处理方式，并为每个处理方式提供一个具体的使用场景。具体格式要求如下：使用 markdown 语法，以等级2的标题列出三个处理方式，并为每个处理方式配上一个有序列表（1. 例子1 2. 例子2）说明使用场景。
user
```
## 重新抛出异常
1. 例子1: 在服务层调用外部API时，如果API返回错误，可以将错误包装成我们自己的异常类，重新抛出给调用者，以便调用者根据不同类型的异常做出适当的响应。
2. 例子2: 当在处理数据库操作时遇到特定的异常（如数据库连接失败），可以直接抛出自定义的ApiException，保留原始异常的信息，使调用者可以根据异常类型快速定位问题。

## 返回错误信息给客户端
1. 例子1: 在用户注册功能中，如果检测到用户提交的邮箱已被注册，可以通过抛出ApiException并设置相应的错误代码和消息，将这些信息封装在一个友好的响应对象中返回给客户端。
2. 例子2: 当API接收到了客户端的无效请求参数时，同样可以抛出ApiException，并将参数错误的具体信息返回给客户端，方便前端提示用户进行修正。

## 记录错误日志并返回通用错误信息
1. 例子1: 在财务系统的关键操作中，如果发生任何异常，可以先将异常详情记录到日志中，然后再向客户端返回一个标准化的错误信息，保护系统的内部详情不被泄露。
2. 例子2: 对于核心业务接口，无论发生何种类型的异常，都可以先记录详细的日志信息，然后根据实际情况返回1个 '~/api/information/500' 这样的通用错误页或统一的失败响应，保护应用的安全性。
```
assistant