Advertisement
Guest User

try catch

a guest
Mar 29th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.94 KB | None | 0 0
  1. import Foundation
  2. //error handling
  3. class MyError{
  4.    
  5.     /*
  6.     struct RimonError: Error {
  7.         var errorNumber:Int
  8.         var errorMessage:String
  9.     }
  10.     */
  11.     struct RimonError:Error {}
  12.     enum CoronaDetected : Error {case checkInPorgress, infacted, quarantine , isOutSide, isDead}
  13.     enum CoronaProtected: Error {case withoutMask, withoutGloves, withoutProtectiveSuite}
  14.    
  15.     func doSomeBad() throws {
  16.         //some normal functioality
  17.         print ("doing some bad stuff")
  18.         throw RimonError()
  19.         //throw RimonError(errorNumber: 404, errorMessage: "Page not found")
  20.     }
  21.    
  22.     //throws BUT NOT throw
  23.     func notReallyBad() throws{
  24.         print ("not really throw")
  25.     }
  26.    
  27.     //pre defiend error
  28.     func goOutSide() throws{
  29.         print ("going out side to the supermarket")
  30.         throw CoronaDetected.quarantine
  31.     }
  32.    
  33.     //defer statement
  34.     func badAndClean() throws {
  35.         //defer = finally
  36.         defer {
  37.             print ("defer = cleanups (destruct, gps, camera db)")
  38.         }
  39.         print ("bad stuff")
  40.         throw RimonError()
  41.     }
  42.    
  43.     func badOrNot() throws {
  44.         defer {print ("bad or not - defer")}
  45.         //some logic
  46.         //int -65,536 - 65,535
  47.         //uInt 0-131,156
  48.         if arc4random_uniform(10)%2==0{
  49.             throw RimonError()
  50.         }
  51.     }
  52. }
  53.  
  54. class handleException{
  55.     let e = MyError()
  56.    
  57.     func example1(){
  58.         do {
  59.             try e.notReallyBad()
  60.             try e.doSomeBad()
  61.             print ("i am not a princess")
  62.         } catch {
  63.             print ("failed")
  64.         }
  65.        
  66.     }
  67.    
  68.     func example2(){
  69.         do{
  70.             try e.goOutSide()
  71.         }
  72.         catch MyError.CoronaDetected.checkInPorgress{
  73.             print ("we dont have a result, stay at home")
  74.         }
  75.         catch MyError.CoronaDetected.infacted{
  76.             print ("you are infacted, you can not go outside")
  77.         }
  78.         catch MyError.CoronaDetected.isDead{
  79.             print ("another brother is down to the grave")
  80.         }
  81.         catch MyError.CoronaDetected.isOutSide{
  82.             print ("you are already out side, do you have any sympthoms?")
  83.         }
  84.         catch MyError.CoronaDetected.quarantine{
  85.             print ("you need to be in quarantine, stay at home")
  86.         }
  87.         catch {
  88.             print ("an unknown mistake...")
  89.         }
  90.     }
  91.    
  92.     func example3(){
  93.         do{
  94.             try e.badAndClean()
  95.         }
  96.         catch let e{
  97.             print (e)
  98.         }
  99.     }
  100.    
  101.     func example4(){
  102.         //inline shortcuts :)
  103.         //try! e.notRellayBad() //if throws - app will crash
  104.         try? e.notReallyBad() //if thrown - return nil
  105.         if (try? e.doSomeBad()) != nil {
  106.             //do some stuff here
  107.         } else {
  108.             print ("Huston we have a problem :(")
  109.         }
  110.     }
  111. }
  112.  
  113. var test = handleException()
  114. test.example4()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement