ChaosSpeeder
ChaosSpeeder

Reputation: 3508

Swift 2: Invalid conversion from throwing function of type to non-throwing function

I have some (ugly) self-written code ported to Swift2 and got this error message in a lambda function:

function with error

What I didn't understand is, that I handle the whole code with the error throwing function JSONObjectWithData and catch the error. I throw nothing in the code. Nevertheless the compiler means that I am throwing an error.

I need to understand this behavior. Please be kind because I know that I have to improve my code to make full use of the new error handling concept in swift2.

Thank you very much in advance.

Upvotes: 17

Views: 10097

Answers (2)

Andrew
Andrew

Reputation: 5136

I think the best way forward is to change your failure function signature to take an ErrorType. Then just

catch let error {
    failure(error: error)
}

will do.

Upvotes: 3

ChaosSpeeder
ChaosSpeeder

Reputation: 3508

This was fast. I have figured the solution for my problem out with a little help of this article:

http://www.hackingwithswift.com/new-syntax-swift-2-error-handling-try-catch

you have to put a general catch clause at the end of the code because the catch of NSError alone is not sufficient.

catch let error as NSError
{
   failure(error: error)
   return
}

// this is important -->
catch
{
}

Upvotes: 38

Related Questions