Hacker News new | past | comments | ask | show | jobs | submit login

A guard statement requires you to actually handle the error, though. The exclamation mark will crash the app.



assertionFailure is not any more "handling the error" than a forcefully unwrapping the optional.


Yeah, it's also something you shouldn't do.


What should you do when URL(string:) returns nil?


Obviously it depends heavily on what you're doing in your app and where that string is coming from.

Is it a hard coded string that will never change? Force unwrapping is probably appropriate.

Is it based on user input? Then you should probably tell the user the string they entered isn't a URL.


Right, and in that case it's pretty clear how errors can occur and what you should do to handle it.


That's contextual. Maybe some combination of:

- abort and unwind the current action

- retry something

- log something

- abort the app explicitly

- fallback to a different value

- comment why this is a known-possible failure state

- present a message to the user

...


The one time you should unwrap it is if it's a constant - that way the app will always immediately crash if it's nil. Pretty difficult to not run into a bug like that.

But if you're creating it dynamically you should be guarding and throwing an error.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: