gpt4 book ai didi

eiffel - 结果附加或异常

转载 作者:行者123 更新时间:2023-12-05 02:01:46 26 4
gpt4 key购买 nike

假设我有一个函数 f,它应该通过调用 g 返回一个 attached T。然而,g 返回一个可分离的 T。如果 g 导致 Void,我想引发这样的异常:

f: T
do
if attached g as res then
Result := res
else
raise
end
end

raise
do
(create {DEVELOPER_EXCEPTION}).raise
end

在此设置中,EiffelStudio 给我一个错误 VEVI:未正确设置变量。变量:f 末尾的 Result

确实,Result 在 f 末尾可以为 Void,但在这种情况下执行不应到达 f 末尾,应该引发异常。

如何重构代码以获得类似的结果?

最佳答案

如果引发异常的类型无关紧要,则以下代码将起作用:

f: T
do
Result := g
check is_g_attached: attached Result then end
end

如果引发的异常的类型很重要,则可以使用后置条件 False 来扩充功能 raise 以指示该功能永远不会返回。然后,代码看起来像

f: T
do
Result := g
if not attached Result then
raise
end
end

raise
do
(create {DEVELOPER_EXCEPTION}).raise
ensure
False
end

关于eiffel - 结果附加或异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66322061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com