Skip to content

Instantly share code, notes, and snippets.

enum Error: ErrorType {
case SomeExpectedError
case SomeUnexpectedError
}
func functionThatThrows() throws {
throw Error.SomeExpectedError
}
XCTAssertThrowsError(try functionThatThrows(), "some message") { (error) in
// disable error handling
try! division(numerator: 10, denominator: 5)
enum DivisionError: Error {
case dividedByZero
}
func division(numerator: Int, denominator: Int) throws {
if denominator == 0 {
throw DivisionError.dividedByZero
}
// create an enum with error values
enum DivisionError: Error {
case dividedByZero
}
// create a throwing function using throws keyword
func division(numerator: Int, denominator: Int) throws {
// throw error if divide by 0
do {
try division(numerator: 10, denominator: 0)
...
}
catch DivisionError.dividedByZero {
// statement
}
// call throwing function using try keyword
try division(numerator: 10, denominator: 0)
// create throwing function using throws keyword
func division(numerator: Int, denominator: Int) throws {
// throw error if divide by 0
if denominator == 0 {
throw DivisionError.dividedByZero
}
...
}
class LoginViewController: UIViewController {
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
override func viewDidLoad() {
}
func showError(_ message: String) {
extension ValidationError: LocalizedError {
var errorDescription: String? {
switch self {
case .emptyName:
return "Please enter name."
case .shortName:
return "Name is too short."
case .longName:
return "Name is too long."
case .emptyPassword:
func makeRequest() {
do {
let name = try ValidateService.validate(name: nameTextField.text)
let password = try ValidateService.validate(password: passwordTextField.text)
self.sendLoginRequest(name: name, password: password)
} catch {
self.showAlert(error.localizedDescription)
}
}