如何在我的程序中停止执行
How to stop execution in my program
如果不在此处复制粘贴我的代码,我如何才能阻止我的 ADA 程序在 运行 时间内执行更多代码行,如果它计算出某个值 'X'?
类似于:
variable_name := variable_name +4;
if variable_name >1 then
// END program here and dont execute any lines under this one
end if
我不是编程新手,而是 ADA 新手,所以找到正确的语法很痛苦。有帮助吗?
if variable_name >1 then
raise PROGRAM_ERROR with "Aborted because ...";
end if;
会按照您的要求去做。这是否是您想要的是另一回事,您没有给我们足够的上下文来猜测。
"abort" 语句也可以使用,但它的正常作用是终止多任务程序中的任务。
引发异常可能是最简单的,如果您不喜欢标准异常,您可以随时声明自己的异常。除了异常,您还可以在自己的异常处理程序中进行任何整理(例如,如果需要关闭文件)。有关详细信息,请参阅 the Wikibook。
没有任何特定的语法。
如果您在主程序中,一个简单的 return
就可以了。
Ada83 兼容的答案是 here on SO。
这两个都可以,只要你没有任何任务。
有一个 Ada95 Rosetta 代码解决方案,无论您是否有任务,它都可以工作:
with Ada.Task_Identification; use Ada.Task_Identification;
procedure Main is
-- Create as many task objects as your program needs
begin
-- whatever logic is required in your Main procedure
if some_condition then
Abort_Task (Current_Task);
end if;
end Main;
和特定于 GNAT 的解决方案,也适用于任务:
with Ada.Text_IO; use Ada.Text_IO;
with GNAT.OS_Lib;
procedure Stopping is
procedure P is
begin
GNAT.OS_Lib.OS_Exit (0);
end P;
begin
Put_Line ("starting");
P;
Put_Line ("shouldn't have got here");
end Stopping;
如果不在此处复制粘贴我的代码,我如何才能阻止我的 ADA 程序在 运行 时间内执行更多代码行,如果它计算出某个值 'X'?
类似于:
variable_name := variable_name +4;
if variable_name >1 then
// END program here and dont execute any lines under this one
end if
我不是编程新手,而是 ADA 新手,所以找到正确的语法很痛苦。有帮助吗?
if variable_name >1 then
raise PROGRAM_ERROR with "Aborted because ...";
end if;
会按照您的要求去做。这是否是您想要的是另一回事,您没有给我们足够的上下文来猜测。
"abort" 语句也可以使用,但它的正常作用是终止多任务程序中的任务。
引发异常可能是最简单的,如果您不喜欢标准异常,您可以随时声明自己的异常。除了异常,您还可以在自己的异常处理程序中进行任何整理(例如,如果需要关闭文件)。有关详细信息,请参阅 the Wikibook。
没有任何特定的语法。
如果您在主程序中,一个简单的 return
就可以了。
Ada83 兼容的答案是 here on SO。
这两个都可以,只要你没有任何任务。
有一个 Ada95 Rosetta 代码解决方案,无论您是否有任务,它都可以工作:
with Ada.Task_Identification; use Ada.Task_Identification;
procedure Main is
-- Create as many task objects as your program needs
begin
-- whatever logic is required in your Main procedure
if some_condition then
Abort_Task (Current_Task);
end if;
end Main;
和特定于 GNAT 的解决方案,也适用于任务:
with Ada.Text_IO; use Ada.Text_IO;
with GNAT.OS_Lib;
procedure Stopping is
procedure P is
begin
GNAT.OS_Lib.OS_Exit (0);
end P;
begin
Put_Line ("starting");
P;
Put_Line ("shouldn't have got here");
end Stopping;