D:如何从主通道退出?

D:如何从主通道退出?,d,main,exit,D,Main,Exit,终止/退出主功能的方式是什么 import std.stdio; import core.thread; void main() { int i; while (i <= 5) { writeln(i++); core.thread.Thread.sleep( dur!("seconds")(1) ); } if (i == 5) { writeln("Exit"); ret

终止/退出主功能的方式是什么

import std.stdio;
import core.thread;

void main()
{
    int i;
    while (i <= 5)
    {
        writeln(i++);
        core.thread.Thread.sleep( dur!("seconds")(1) );
    }
    if (i == 5) 
    {
        writeln("Exit");
        return; // I need terminate main, but it's look like break do exit only from scope
    }
    readln(); // it's still wait a user input, but I need exit from App in previous step
}
导入标准stdio;
导入core.thread;
void main()
{
int i;

而(iImport stdlib并在通过0时调用exit

 import std.c.stdlib;
    exit(0);

如果你没有做紧急出口,那么你需要清理一切。为此,我创建了一个
ExitException

class ExitException : Exception
{
    int rc;

    @safe pure nothrow this(int rc, string file = __FILE__, size_t line = __LINE__)
    {
        super(null, file, line);
        this.rc = rc;
    }
}
您可以编写
main()
函数,然后

int main(string[] args)
{
    try
    {
        // Your code here
    }
    catch (ExitException e)
    {
        return e.rc;
    }
    return 0;
}
在您需要退出的时候,请拨打电话

throw new ExitException(1);

但这不会运行终结器。代码中的return语句将退出程序。您遇到的问题是一个逻辑问题—当while循环终止时,i==6,而不是5。@AdamD.Ruppe,哦,您是对的,有没有办法在while循环中修复它,或者唯一可能的修复方法是
if(i==6)
?正如Adam所说的
if(i==5)
始终为false。如果(i==6),则可以编写
如果您想执行
if
分支。或者您是否打算将
if
放在循环中?使用增量后操作符可以更改程序的输出,但它仍然以
i==6
退出循环。谢谢!使用
return
从main退出是否正确?退出与退出w有什么区别使用
exit(0);
?是的,您可以使用
return
main
退出。如果您使用
int main(string[/args)
定义main,那么您也可以设置返回代码。
exit(0)
终止进程,不运行析构函数、终结器等。这可能会导致一些垃圾。如果在主函数中使用
return
,则不会发生这种情况。