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

Reply via email to