ios - 如何在 iOS 中尝试/捕获此类错误

标签 ios try-catch swift3

我有一些代码

    captureSession = AVCaptureSession()
    captureSession!.sessionPreset = AVCaptureSessionPresetPhoto
    let backCamera = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) etc...

当然,这在模拟器上是行不通的。没问题。

如果您确实在模拟器上运行它,它会在此处正确崩溃

    captureSession!.sessionPreset = AVCaptureSessionPresetPhoto

像这样

enter image description here

好奇一下,您将如何“捕获”该崩溃?

如果我尝试以不同的方式“尝试”,

    try captureSession!.sessionPreset = AVCaptureSessionPresetPhoto

我只得到...

/Users/jpm/Desktop/development/-/classes/CameraPlane.swift:67:3: No calls to throwing functions occur within 'try' expression

你是如何包装并捕获这种类型的调用的?


顺便说一句,对于专门处理相机中这种烦恼的人来说,

func cameraBegin()
    {
    captureSession = AVCaptureSession()

    if ( AVCaptureDevice.devices().count == 0 )
        {
        print("Running on simulator.")
        return
        }
    ...

最佳答案

try 只能在调用抛出 的函数时使用。这些函数显式地标记有抛出

如果您想安全地解开可选内容(我猜这就是您想要实现的目标),您可以使用 guard

var number: Int?
guard let unwrappedNumber = number else {
    return
}
print("number: \(unwrappedNumber)")

关于ios - 如何在 iOS 中尝试/捕获此类错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40439714/

相关文章:

ios - 以编程方式触发呼吸应用程序或 HRV 测量 [Apple Watch 4]

ios - 在 super.init 初始化 self 之前在属性访问 'self' 中使用 'frame'

ios - 在 itunes 上取消发布应用程序没有反射(reflect)

javascript - 为什么 try {} .. catch() 不能与 async/await 函数一起使用?

ios - UIScrollView - UIView 的缩略图 View

java - 方法返回语句与 try-catch

c++ - 在 C++ 中使用两个文件流处理异常

ios - 在屏幕外显示一个弹出窗口

ios - 如何将 SwiftUI 颜色更改为 UIColor?

iphone - 从横向切换到纵向后,将 UIScrollView 保持在正确的位置