D:如何退出main?
D: How to exit from main?
terminate/exit main 函数的 D 方法是什么?
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
}
我尝试谷歌搜索并找到了下一个问题 D exit statement
建议使用 C 退出函数。现代 D 中是否有任何新的未来,可以让它变得更优雅?
导入 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);
terminate/exit main 函数的 D 方法是什么?
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
}
我尝试谷歌搜索并找到了下一个问题 D exit statement 建议使用 C 退出函数。现代 D 中是否有任何新的未来,可以让它变得更优雅?
导入 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);