func riskyOperation() throws -> Int {
return 42
}
let result = riskyOperation()
print(result)
medium
A. Missing try keyword when calling riskyOperation()
B. Function should not return Int
C. Throws keyword is not allowed here
D. Missing catch block after function call
Solution
Step 1: Check calling syntax for throwing functions
Calling a function marked with throws requires using try keyword.
Step 2: Identify missing try keyword
The code calls riskyOperation() without try, causing a compile error.
Final Answer:
Missing try keyword when calling riskyOperation() -> Option A
Quick Check:
Throwing functions need try when called [OK]
Hint: Use try when calling throws functions [OK]
Common Mistakes:
Calling throws function without try
Assuming throws means no return value
Forgetting to handle errors with do-catch
5. You want to write a function parseNumber(from: String) that throws an error if the string is not a valid integer. Which of the following implementations correctly uses throws and error handling?
hard
A. enum ParseError: Error { case invalidFormat }
func parseNumber(from text: String) throws -> Int {
guard let number = Int(text) else {
throw ParseError.invalidFormat
}
return number
}
B. func parseNumber(from text: String) -> Int {
if Int(text) == nil {
print("Invalid format")
}
return Int(text) ?? 0
}
C. enum ParseError: Error { case invalidFormat }
func parseNumber(from text: String) -> Int throws {
if Int(text) == nil {
throw ParseError.invalidFormat
}
return Int(text)!
}
D. func parseNumber(from text: String) throws -> Int {
if Int(text) == nil {
return 0
}
return Int(text)!
}
Solution
Step 1: Check function signature and error throwing
enum ParseError: Error { case invalidFormat }
func parseNumber(from text: String) throws -> Int {
guard let number = Int(text) else {
throw ParseError.invalidFormat
}
return number
} correctly declares throws after parameters and before return type, and throws error if parsing fails.
Step 2: Verify error throwing logic
enum ParseError: Error { case invalidFormat }
func parseNumber(from text: String) throws -> Int {
guard let number = Int(text) else {
throw ParseError.invalidFormat
}
return number
} uses guard let to safely unwrap Int, throwing ParseError.invalidFormat if conversion fails.
Final Answer:
Correctly implements throwing function with error handling. -> Option A
Quick Check:
Throws declared and error thrown on invalid input [OK]
Hint: Use guard and throw error inside throws function [OK]
Common Mistakes:
Not marking function with throws
Throwing error outside throws function
Returning default instead of throwing error
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.