3 ms·
A guard statement requires you to actually handle the error, though. The exclamation mark will crash the app.
by untog 7y ago
A guard statement requires you to actually handle the error, though. The exclamation mark will crash the app.
- saagarjha 7y agoassertionFailure is not any more "handling the error" than a forcefully unwrapping the optional.
- untog 7y agoYeah, it's also something you shouldn't do.
- saagarjha 7y agoWhat should you do when URL(string:) returns nil?
- RandallBrown 7y agoObviously 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.
- saagarjha 7y agoRight, and in that case it's pretty clear how errors can occur and what you should do to handle it.
- untog 7y agoThe 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.
- swatcoder 7y agoThat'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 ...