On Aug 5, 2016, at 8:10 PM, Kevin Ballard <[email protected]> wrote: > >> >> On Aug 5, 2016, at 5:16 PM, Erica Sadun <[email protected] >> <mailto:[email protected]>> wrote: >> >> >>> On Aug 5, 2016, at 4:19 PM, Douglas Gregor via swift-evolution >>> <[email protected] <mailto:[email protected]>> wrote: >>> >>>> >>>> On Aug 5, 2016, at 12:59 PM, Kevin Ballard via swift-evolution >>>> <[email protected] <mailto:[email protected]>> wrote: >>>> >>>> If all you want to do is get the localized description, then you can just >>>> say `(error as NSError).localizedDescription`. >>> >>> Just ‘error.localizedDescription’ works now. That was part of SE-0112. >>> >>> - Doug >> >> Would it kill to allow: >> >> let err = NSError() >> err.localizedDescription = "bad things happen" >> throw err >> >> or even >> >> throw NSError("Bad things happen") >> >> for lightweight use? I ended up refactoring entirely to enum : Error because >> Swift yelled at me for using NSError(): "this results in an invalid NSError >> instance. It will raise an exception in a future release. Please call >> errorWithDomain:code:userInfo: or initWithDomain:code:userInfo:. This >> message shown only once." >> >> enum Errors: Error {case bad} >> Errors.bad._code // 0 >> Errors.bad._domain // "Errors" >> Errors.bad._userInfo // Optional({}) >> Errors.bad.localizedDescription // "The operation couldn’t be completed. >> (Errors error 0.)" >> >> Bleh. > > NSErrors need a domain/code. It doesn’t make much sense to throw one without > it. And besides, there’s a fairly trivial solution for doing what you want to > do: > > struct GenericError: LocalizedError { > let message: String > init(_ message: String) { > self.message = message > } > var errorDescription: String? { > return message > } > } > > Now you can just say `throw GenericError(“Bad things happen”)`. > > -Kevin Ballard
I know I can build workarounds but if we're going to have the error.localizedDescription, making it an initializable/assignable property just seems like a nice thing™. Why can't we have nice things™? -- E
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
