Ruby 中如何自定义异常类?

· 约 3 分钟读完 · 第 94 / 199 章

推荐答案

在 Ruby 中,自定义异常类可以通过继承 StandardError 或其子类来实现。以下是一个简单的示例:

本题详细解读

1. 自定义异常类的基本结构

在 Ruby 中,所有的异常类都是 Exception 类的子类。通常情况下,自定义异常类应该继承自 StandardError,因为 StandardError 是 Ruby 中大多数内置异常的基类。继承自 StandardError 的异常可以被 rescue 捕获,而不会捕获到系统级别的异常(如 NoMemoryError)。

2. 自定义异常类的初始化

自定义异常类可以像普通类一样定义初始化方法 initialize。在这个方法中,你可以传递一个错误消息,并通过 super 方法将其传递给父类的 initialize 方法。

3. 抛出和捕获自定义异常

你可以使用 raise 关键字来抛出自定义异常,并使用 rescue 来捕获它。

在这个例子中,raise 抛出了一个 CustomError 异常,并传递了一个自定义的错误消息。rescue 捕获了这个异常,并输出了错误消息。

4. 自定义异常类的扩展

你还可以在自定义异常类中添加额外的方法或属性,以便在捕获异常时获取更多的上下文信息。

在这个例子中,CustomError 类增加了一个 code 属性,用于存储错误代码。在抛出异常时,可以传递错误代码,并在捕获异常时访问它。