-1

我收到了上述错误,并试图通过添加一个 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 {

    }

}
4

2 回答 2

0

您正在编写 Swift 代码。不是 Java 或 C++ 代码。例外的工作方式不同。您需要将 try 用于可以抛出的单个调用,而不是用于大块代码。

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

于 2015-11-14T18:33:14.947 回答
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的里面看到任何潜在的错误

于 2015-11-14T18:15:47.340 回答