Errors thrown from here are not handled for do { } catch in Swift 2.0

后端 未结 2 638
渐次进展
渐次进展 2021-02-03 21:34

After i update swift 2.0 i got an error with do { try } catch like an image below.

How can i fix this? Thanks!

2条回答
  •  太阳男子
    2021-02-03 21:58

    In addition to handling the error types you know that your function can throw, you need to handle the error type you don't know with universal catch blocks. Just use extra catch block and print some generalized error message to user.

    See my custom error handling code. Here, I have created a function that will print a number if it is odd and less than 100. I have handled with two types of Errors : Even and tooBig, for this I have created an enum of type ErrorType.

       enum InvalidNumberError : ErrorType{
            case even
            case tooBig
       }
    
      //MARK: this function will print a number if it is less than 100 and odd
    
       func printSmallNumber(x :Int) throws{
    
            if x % 2 == 0 {
                 throw InvalidNumberError.even
            }
            else if x > 100 {
                 throw InvalidNumberError.tooBig
            }
    
            print("number is \(x)")
       }
    

    Error handling code is:

        do{
            try printSmallNumber(67)
        }catch InvalidNumberError.even{
            print("Number is Even")
        }catch InvalidNumberError.tooBig{
            print("Number is greater tha 100")
        }catch{
            print("some error")
        }
    

    Last catch block is to handle the unknown error.

    Cheers!

提交回复
热议问题