Swift ERROR:: Call puede lanzar, pero no está marcado con 'try' y el error no se maneja

Acabo de comenzar a aprender Swift y, estoy tratando de agregar una canción en mi código para reproducirlo cuando presiono el button, pero ese error aparece. ¿Cómo arreglar este error?

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() } } 

El comstackdor le dice correctamente que el inicializador puede arrojar un error cuando la statement del método indica correctamente (por ejemplo, cuando el NSURL no existe):

 init(contentsOfURL url: NSURL) throws 

Por lo tanto, usted, como desarrollador, tiene que manejar un error que finalmente ocurra:

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

Alternativamente, puede decirle al comstackdor que la llamada siempre tendrá éxito vía

 let buttonAudioPlayer = try! AVAudioPlayer(contentsOfURL: buttonAudioURL) 

Pero eso hará que su aplicación se bloquee si la creación no tiene éxito, tenga cuidado. Solo debe utilizar el segundo enfoque si está intentando cargar los resources de la aplicación que deben estar allí.

Existe la posibilidad de que AVAudioPlayer(contentsOfURL: buttonAudioURL) pueda lanzar una exception. Por lo que necesita agregar código de controller de excepciones.

  do { try buttonAudioPlayer = AVAudioPlayer(contentsOfURL: buttonAudioURL) } catch { //handle exception here }