sách gpt4 ai đã đi

exception-handling - 有标准异常(exception)吗?

In lại 作者:行者123 更新时间:2023-12-04 07:57:55 27 4
mua khóa gpt4 Nike

我一直在使用throw new Exception("...")在我的代码中,因为我找不到其他可以使用的东西。我正在寻找像 C++'s 这样的东西 out_of_range logic_error 类。

std.exception 定义了一些函数来帮助处理异常,但没有实际的类型。

我们是要定义我们自己的所有异常,还是 Ngoại lệ只是用于一切?

1 Câu trả lời

在 Phobos 中的大多数情况下,每个模块都有自己的异常类型,以模块命名 - 例如UTFException对于 std.utf 和 FileException对于标准文件。有一些没有(例如 std.concurrency 有几种异常类型 - MessageMismatch , OwnerTerminated 等),但这是总体趋势。因此,没有以程序员自己实例化它们的想法创建异常类型。没有什么可以阻止您使用任何现有的异常类型,但在大多数情况下,重用它们没有意义,因为它们是特定于模块而不是特定于用例的。

现在,最接近 C++ 的 out_of_range 的类比和 logic_error类型将是 Lỗi s 而不是 Ngoại lệ s - 特别是 core.exception.RangeErrorcore.exception.AssertError . Lỗi s 是不同的,并且不打算从中恢复。 core.exception 定义了其中的几个(包括 OutOfMemoryError )。你通常不会自己使用这些,但如果你愿意,你可以。 AssertErrorĐúng khẳng định 抛出的内容当它失败时。

所以,要清楚,Throwable是基本异常类型。 LỗiNgoại lệTừ Throwable .任何不是从 Ngoại lệ 派生的异常类型跳过析构函数、范围语句和 finally block ,并且不打算从中恢复。几个标准Lỗi s 存在 - 主要在 core.exception 中找到,但如果需要,您可以定义自己的。您可能不会使用或定义 Lỗi s 经常 - 除了使用 khẳng định .

另一方面,任何源自 Ngoại lệ旨在可恢复并将触发析构函数、范围语句和 finally block 。一般没有标准Ngoại lệ -派生类型,您将在自己的代码中实例化。你 catch Ngoại lệ s 是 Phobos 定义的,但你通常不会扔掉它们。相反,您可以实例化 Ngoại lệ直接或您使用自己的Ngoại lệ -派生类型。

sử dụng enforce 也经常被认为是好的做法。和 enforceEx 而不是直接抛出异常(尽管显然在某些情况下直接抛出异常更有意义)。

关于exception-handling - 有标准异常(exception)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8144522/

27 4 0
Bài viết được đề xuất: macos - 未找到身份
Bài viết được đề xuất: python - 按总值对堆积柱形图进行排序 - Python
Bài viết được đề xuất: 页面上的Spring MVC + Thymeleaf div没有生成
Bài viết được đề xuất: exception-handling - Red 语言中的 Try/catch 异常
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com