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

打开时处理错误URL的正确方法

卓致远
2023-03-14

任务相当简单。 使用给定的URLString,在它有效时打开它。 这就是我试过的:

func openURL(_ urlString: String) {
    guard let url = URL(string: urlString) else {
        showInvalidUrlAlert()
        return
    }
    UIApplication.shared.open(url)
}

这个例子就是这样的:“https://www.google.de/?hl=de”

然而,当传递一个无效的url时,这在我的应用程序中也是可能的(例如:“asdfd”),我会在控制台上得到这个错误,但在应用程序中什么也没有发生:

[默认值]无法打开URL asdf:Error domain=NSOSStatUserRordomain code=-50“Invalid input parameters”UserInfo={NSDebugDescription=无效的输入参数,_LSLINE=252,_LSFunction=-[_LSDOPenclient OpenURL:Options:CompletionHandler:]}

这里的最佳实践是什么?

共有1个答案

宋典
2023-03-14

guard语句中,您可以抛出应用程序创建的异常,而只放入return,如下所示:

guard let urlString = url, !urlString.isEmpty, let url = URL(string: urlString) else {
    throw ErrorEnum.invalidURL
}

使用这种方法,您可以捕获错误并为用户发送UI反馈,在该反馈中,用户调用defuncopenurl

 类似资料:
  • 本文向大家介绍vue多页面开发和打包正确处理方法,包括了vue多页面开发和打包正确处理方法的使用技巧和注意事项,需要的朋友参考一下 前段时间做项目,技术栈是vue+webpack,主要就是官网首页加后台管理系统 根据当时情况,分析出三种方案 一个项目代码里面嵌两个spa应用(官网和后台系统) 分开两套项目源码 一套项目源码里面就一个spa应用 思考: 直接否定了一套项目源码里一个spa应用(ui样

  • 在 node.js中,通常的做法是将错误消息作为回调函数的第一个参数返回。在纯JS中有许多解决方案(promise,步骤,seq等),但它们似乎都无法与ICS集成。在不损失太多可读性的情况下处理错误的正确解决方案是什么? 例如:

  • 问题内容: 我一直在使用spring-webflux进行一些研究,我想了解使用路由器功能处理错误的正确方法。 我创建了一个小项目来测试几个场景,并且我希望获得有关它的反馈,并查看其他人在做什么。 到目前为止,我在做什么。 提供以下路由功能: 我已经在我的处理程序上执行了 它们是我的错误处理程序: 这是完整的示例存储库: https://github.com/LearningByExample/re

  • 我正在使用带有knex javascript库的postgres来构建我的sql查询。我想要处理所有从postgres服务器抛出的错误,所以我想要这样做的方式是通过检查抛出错误的类型。 有没有办法处理这样的错误?

  • 本文向大家介绍vue打包后显示空白正确处理方法,包括了vue打包后显示空白正确处理方法的使用技巧和注意事项,需要的朋友参考一下 在项目中很多时候需要用到vue打包成html不需要放在服务器上就能浏览。根据官网打包出来的html直接打开是显示空白。 vue打包后显示空白正确处理方法是 1、找到配置文件 修改 这样打包处理可以打开但是页面样式会找不到 2、修改 找到对应的位置加上publicPath:

  • 问题内容: 任何人都可以澄清一下下面的过程是否是正确的处理流程流的方法,而没有任何流缓冲区已满和阻塞问题 我正在从Java程序中调用外部程序,正在使用ProcessBuilder来构建流程,执行之后 我正在使用一种方法来处理流程 在我的方法中,我试图处理流程流 readStream方法用于读取我的流文本。 问题答案: 不,那不是正确的方法。 首先,在某些系统上,您的代码将永远停留在调用中,因为该过

  • 问题内容: 让我们开始考虑两种类型的相机旋转: 摄像机绕点旋转(轨道): 相机旋转目标(FPS) 然后是一个更新函数,其中从眼睛/目标/上摄像机矢量中计算出投影/视图矩阵: 当摄像机的视图方向与上轴平行(在此处为z-up)时,出现这些旋转功能的问题…在那时,摄像机的行为确实令人讨厌,因此我将遇到以下故障: 所以我的问题是,我该如何调整以上代码,使相机完整旋转,而最终结果在某些边缘点上看起来并不奇怪

  • 我有这样一门DTO课: 我必须通过API提供更新和删除功能。 我写了以下代码删除记录: RemoveUserDetails方法如下: 这段代码的问题是,即使用户不存在,它也不会显示我返回的Mono错误。在任何情况下,都会返回“Remove Successful”。 如何更改我的服务层方法,使其能够返回repo方法接收到的任何内容?我对Reactor代码还不熟悉,所以不知道怎么写。