当前位置: 首页 > 知识库问答 >
问题:

Swift应用程序在出错后停止运行

权玉泽
2023-03-14

我的iOS应用程序在出现运行时错误后停止运行。我将错误捕获为异常。我希望应用程序在错误处理后继续运行到下一步。有人建议怎么做吗?

do {
    guard let ps: Element = try! docu.getElementById("product-name")! else { ide = "" }
    if ps != nil {
        ide = (try ps.text())
    }
} catch {
    print("error")
    ide = ""
}

共有1个答案

沈德寿
2023-03-14

我认为你是过度使用(强制打开)符号在这里。它不能优雅地处理零值,事实上,它崩溃了。

我想你可能想在这里做的是

guard
    let ps: Element = try? doc.getElementById("product-name"),
    let ide = try? ps.text()
    else {
    print("error")
    ide = ""
}
// ide is guaranteed to be valid here
...

请注意,如果使用try?则不需要“捕获”错误,如果调用会引发异常,则只需返回可选值nil

或者你可以简单地

let ps: Element = try? doc.getElementById("product-name")
let ide = try? ps?.text()
// ide will be an optional value here

如果你真的不想守护/如果让...

 类似资料:
  • 我正在以独立模式运行Spark群集。 我已使用以下选项提交了群集模式下的Spark应用程序: 使作业具有容错性。 现在我需要保持集群运行但停止应用程序运行。 我尝试过的事情: 停止集群并重新启动它。但是当我这样做时,应用程序会恢复执行。 使用了名为DriverWrapper的守护进程的Kill-9,但之后工作再次恢复。 我还删除了临时文件和目录并重新启动了集群,但作业再次恢复。 所以正在运行的应用

  • 我试图重新创建Connect四,我成功了。但我想通过频繁地切换颜色,给玩家一个获胜的四张光盘在哪里的指示。我对线程和编程中的时间概念是新的。 我也成功地给了用户这个指示,但是在关闭应用程序之后,控制台仍然会给出输出,也是在使用SetonCloserEquest时。 代码如下:

  • 上周,我完成了一个测试应用程序的开发,并在所有模拟器中成功运行了它。今天我决定考虑发布这个应用程序,并使用了“Sent Android Build”。生成状态“成功”。然后尝试从命令行运行jar,得到: 所以试图逃离GUI并得到: Java版本: 我在Suse Linux 42.1 64b上使用Netbeans(这是新的)。 我在什么地方丢了一个图书馆吗?还是别的什么?

  • LOGCAT: 2021-07-18:01:16.9425655-5655/com。实例Androidinterestcalculator E/AndroidRuntime:致命异常:主进程:com。实例Android有趣的镜头图像描述hereculator,PID:5655 java。lang.RuntimeException:无法启动活动组件信息{com.example.android.int

  • 错误:container_linux.go:247:启动容器进程导致“exec:\”-w\“:在$path中找不到可执行文件”c:\program files\docker toolbox\docker.exe:来自守护进程的错误响应:oci运行时错误:container_linux.go:247:启动容器进程导致“exec:\”-w\“:在$path中找不到可执行文件”。

  • 我在我的工作区中使用STS IDE运行了几个Spring Boot应用程序,在我对其中一个项目进行maven更新后,每个项目都在应用程序启动过程后立即停止。我甚至创建了一个最小的例子,只是为了开始一些事情,同样的事情发生了。 这是我的pom.xml 即使是那些入门示例也会在启动后立即停止。我会非常感谢这里的一些帮助。 编辑:正如Alexandru Marina在评论中所说,我使用的是快照而不是稳定