当前位置:  开发笔记 > IOS > 正文

Swift ERROR ::调用可以抛出,但没有标记为'try',并且没有处理错误

如何解决《SwiftERROR::调用可以抛出,但没有标记为'try',并且没有处理错误》经验,为你挑选了1个好方法。

我刚刚开始学习Swift,我正在尝试在我的代码中添加一首歌来播放它,当我按下按钮但错误显示出来.如何解决这个错误?

var buttonAudioPlayer = AVAudioPlayer()

@IBAction func btnWarning(sender: UIButton) {
    play()
}

override func viewDidLoad() {
    super.viewDidLoad()
}

func play() {
    let buttonAudioURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("warning", ofType: "mp3")!)
    let one = 1

    if one == 1 {
        buttonAudioPlayer = AVAudioPlayer(contentsOfURL: buttonAudioURL) //getting the error in this line
        buttonAudioPlayer.prepareToPlay()
        buttonAudioPlayer.play()
    }
}

luk2302.. 9

编译器正确地告诉您初始化程序可以在方法声明正确指出时抛出错误(例如,当NSURL不存在时):

init(contentsOfURL url: NSURL) throws

因此,您作为开发人员必须处理最终发生的错误:

do {
    let buttonAudioPlayer = try AVAudioPlayer(contentsOfURL: buttonAudioURL)
} catch let error {
    print("error occured \(error)")
}

或者,您可以告诉编译器该调用实际上总是会成功通过

let buttonAudioPlayer = try! AVAudioPlayer(contentsOfURL: buttonAudioURL)

如果创建实际上没有成功,那将导致您的应用程序崩溃- 请小心.你如果要加载该应用程序的资源应该只使用第二种方法必须在那里.



1> luk2302..:

编译器正确地告诉您初始化程序可以在方法声明正确指出时抛出错误(例如,当NSURL不存在时):

init(contentsOfURL url: NSURL) throws

因此,您作为开发人员必须处理最终发生的错误:

do {
    let buttonAudioPlayer = try AVAudioPlayer(contentsOfURL: buttonAudioURL)
} catch let error {
    print("error occured \(error)")
}

或者,您可以告诉编译器该调用实际上总是会成功通过

let buttonAudioPlayer = try! AVAudioPlayer(contentsOfURL: buttonAudioURL)

如果创建实际上没有成功,那将导致您的应用程序崩溃- 请小心.你如果要加载该应用程序的资源应该只使用第二种方法必须在那里.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有