错误:'呼叫可以抛出但未标记为尝试并且未处理错误'

时间:2015-11-14 18:11:37

标签: ios swift error-handling avfoundation do-catch

我收到了上述错误,并尝试通过添加do / catch块来修改此错误。出于某种原因,错误不会消失。有谁知道为什么会这样?

 override func viewDidAppear(animated: Bool) {
    super.viewWillAppear(animated)

    captureSession = AVCaptureSession()
    captureSession?.sessionPreset = AVCaptureSessionPreset1920x1080

    let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)

    do {

        let input = AVCaptureDeviceInput(device: backCamera)

        captureSession?.addInput(input)

        stillImageOutput = AVCaptureStillImageOutput()
        stillImageOutput?.outputSettings = [AVVideoCodecKey : AVVideoCodecJPEG]

        if (captureSession?.canAddOutput(stillImageOutput) != nil){
            captureSession?.addOutput(stillImageOutput)

            previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
            previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect
            previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.Portrait
            oview.layer.addSublayer(previewLayer!)
            captureSession?.startRunning()

        }

    } catch {

    }

}

2 个答案:

答案 0 :(得分:0)

线索在错误说明中:Error: 'Call can throw but is not marked with try and error not handled'

您没有使用try

标记可以投掷的电话

我不会在那里打电话给你,但找到那个并且try放在它前面的人。如果您要分配值,请尝试转到=

的右侧

修改

只看文档,看起来就像是你的

let input = AVCaptureDeviceInput(device: backCamera)

可以抛出的声明。试试=之后的尝试

let input = try AVCaptureDeviceInput(device: backCamera)

然后您可以在print(error)catch查看任何potentiel错误

答案 1 :(得分:0)

您正在编写Swift代码。不是Java或C ++代码。例外情况有所不同。您需要对可以抛出的单个调用使用try,而不是对于大块代码。

我建议您下载免费的Swift 2书籍,并了解Swift 2中的异常如何工作。与其他语言的相似性只是肤浅的。