Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Foundation
- //error handling
- class MyError{
- /*
- struct RimonError: Error {
- var errorNumber:Int
- var errorMessage:String
- }
- */
- struct RimonError:Error {}
- enum CoronaDetected : Error {case checkInPorgress, infacted, quarantine , isOutSide, isDead}
- enum CoronaProtected: Error {case withoutMask, withoutGloves, withoutProtectiveSuite}
- func doSomeBad() throws {
- //some normal functioality
- print ("doing some bad stuff")
- throw RimonError()
- //throw RimonError(errorNumber: 404, errorMessage: "Page not found")
- }
- //throws BUT NOT throw
- func notReallyBad() throws{
- print ("not really throw")
- }
- //pre defiend error
- func goOutSide() throws{
- print ("going out side to the supermarket")
- throw CoronaDetected.quarantine
- }
- //defer statement
- func badAndClean() throws {
- //defer = finally
- defer {
- print ("defer = cleanups (destruct, gps, camera db)")
- }
- print ("bad stuff")
- throw RimonError()
- }
- func badOrNot() throws {
- defer {print ("bad or not - defer")}
- //some logic
- //int -65,536 - 65,535
- //uInt 0-131,156
- if arc4random_uniform(10)%2==0{
- throw RimonError()
- }
- }
- }
- class handleException{
- let e = MyError()
- func example1(){
- do {
- try e.notReallyBad()
- try e.doSomeBad()
- print ("i am not a princess")
- } catch {
- print ("failed")
- }
- }
- func example2(){
- do{
- try e.goOutSide()
- }
- catch MyError.CoronaDetected.checkInPorgress{
- print ("we dont have a result, stay at home")
- }
- catch MyError.CoronaDetected.infacted{
- print ("you are infacted, you can not go outside")
- }
- catch MyError.CoronaDetected.isDead{
- print ("another brother is down to the grave")
- }
- catch MyError.CoronaDetected.isOutSide{
- print ("you are already out side, do you have any sympthoms?")
- }
- catch MyError.CoronaDetected.quarantine{
- print ("you need to be in quarantine, stay at home")
- }
- catch {
- print ("an unknown mistake...")
- }
- }
- func example3(){
- do{
- try e.badAndClean()
- }
- catch let e{
- print (e)
- }
- }
- func example4(){
- //inline shortcuts :)
- //try! e.notRellayBad() //if throws - app will crash
- try? e.notReallyBad() //if thrown - return nil
- if (try? e.doSomeBad()) != nil {
- //do some stuff here
- } else {
- print ("Huston we have a problem :(")
- }
- }
- }
- var test = handleException()
- test.example4()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement