我正在寻找其他问题然后我有了这个问题:
如果我想退出/退出应用程序(当我在Main()方法本身中遇到一些异常时),最好使用return;
中的catch
语句在Main()方法中阻塞?
Application.Exit()
不保证申请退出Environment.Exit()
是另一种选择。 可以使用return;
语句退出应用程序是一个好主意吗?如果不是,那些(微妙)的东西是什么,因为它可能不是一个好主意?
相比之下,退出的最佳方法是什么?
答案 0 :(得分:2)
如果您的应用程序因意外错误而终止,您可能希望使用Environment.FailFast,这将使应用程序“崩溃”并将指定的消息写入事件日志,并为用户提供机会将崩溃数据提交给Microsoft。作为开发人员,Microsoft可以为您提供崩溃数据。
但是,如果您只想将错误条件返回给调用进程(例如在控制台应用程序的情况下),则可以修改Main方法签名以返回int,然后返回非零值,这是按惯例意味着错误的条件。
答案 1 :(得分:1)
谁调用Main()方法?
CLR
如果我想退出/退出应用程序(当我在Main()方法本身中遇到一些异常时),使用return是否是个好主意;来自Main()方法中catch块的语句?
是的,但需要注意的是你没有其他前台线程。
答案 2 :(得分:1)
您可以在Main()周围放置一个巨大的try / catch块,或者设置AppDomain.UnhandledException
事件。这不是直接相关的,但是看看Environment.Exit
,你对Application.Exit是正确的,因为它所做的就是关闭所有窗口。如果您已声明void Main()
而不是int Main()
,Environment.Exit还允许您指定0以外的值作为退出状态(errorlevel)。
答案 3 :(得分:1)
Application.Exit()适用于基于表单的应用程序。在Main中处理异常的最佳方法:
static void Main(string[] args) {
try {
// code here
} catch {
// do any clean up and return
// optionally specify an exit code
Environment.Exit(1 /* or any number other than zero since this is an error condition */);
}
}
答案 4 :(得分:0)
1)OS基本上调用Main方法。它的起始地址是.exe的指定PE头(如果我没记错的话)。
2)是使用return
块中的catch
语句。