如何应对用 Swift 编写的服务器中的致命错误?

How would one cope with a fatalError in a server written in Swift?

提问人:kliron 提问时间:6/26/2018 最后编辑:kliron 更新时间:6/26/2018 访问量:243

问:

我正在评估 Swift 作为一个重要的 Web 应用程序的服务器端语言。选择 Swift 的原因主要是为了能够与用 Swift 编写的现有 iOS 应用程序共享代码。我创建了一个小型的、主要受 IO 约束的 CRUD 应用程序(如果重要的话,请使用 Vapor 3.0)进行评估,总的来说,体验是相当中立的。我不会详细介绍,因为它们与这个问题无关。

Swift 语言在设计上没有提供从致命错误中恢复的方法,就像你通过解包一个值为 nil 的 Optional 而得到的错误一样。

我不明白在服务器应用程序中应该如何处理这种设计特征。例如,即使我确保永远不会在我的代码中强制解开 Optional,我怎么能相信没有库作者这样做呢?如何确保如果线程遇到致命错误,它不会导致整个服务器崩溃?

所以我的问题是,处理这些情况有哪些好的做法?我是否应该通过 fcgi 运行我的应用程序?通过一些外部进程来监督它,并以某种方式在崩溃时重新启动?例如,在具有大量服务器端状态和昂贵处理成本的复杂应用程序中,这是不可接受的,这将是首先选择快速编译语言的主要原因之一。

SWIFT 服务器端 致命错误

评论


答: 暂无答案