Swift:
ত্রুটিগুলি পরিচালনা করা

কিভাবে:

Swift do, try, এবং catch ব্লকের মাধ্যমে ত্রুটি হ্যান্ডলিং ব্যবহার করে। চলুন দেখি:

enum FileError: Error {
    case fileDoesNotExist
    case noPermission
}

func readFile(atPath path: String) throws -> String {
    // ধরুন আমাদের কাছে কিছু লজিক আছে যাচাই করার জন্য যে ফাইলটি আছে কিনা এবং আমাদের এটি পড়ার অনুমতি আছে কিনা
    let fileExists = false
    let havePermission = true

    if !fileExists {
        throw FileError.fileDoesNotExist
    }

    if !havePermission {
        throw FileError.noPermission
    }

    return "ফাইলের বিষয়বস্তু এখানে যাবে"
}

do {
    let fileContent = try readFile(atPath: "/path/to/file")
    print(fileContent)
} catch FileError.fileDoesNotExist {
    print("ওহো! ফাইলটি পাওয়া যায় নি।")
} catch FileError.noPermission {
    print("আহ! ফাইলটি পড়ার অনুমতি নেই।")
} catch {
    print("একটি অজানা ত্রুটি ঘটেছে।")
}

উদাহরন আউটপুট:

ওহো! ফাইলটি পাওয়া যায় নি।

গভীর ডুব

ত্রুটি হ্যান্ডলিং সর্বদা যেমন সুন্দর ছিল না তেমনি এখন আছে। Objective-C-এ, আপনি NSError অবজেক্টের পয়েন্টারগুলির সাথে ডিল করতেন, যা বেশ ক্লান্তিকর মনে হত। এখন, আমাদের কাছে Swift এনামগুলি এবং Error প্রটোকল দিয়ে আরো দৃষ্টিনন্দন সিস্টেম আছে।

Swift-এর throw আমাদের জানান দেয় যে কিছু একটা বেসামাল হয়ে গেছে। do ব্লকগুলি ত্রুটি-সচেতন রিয়েলমের মতো কাজ করে, try প্রিফিক্স ঝুঁকিপূর্ণ ব্যাপারগুলি কল করে এবং catch সমস্যাগুলি সামলায় যদি তা দক্ষিণে যায়।

অপশনালগুলি সেইরূপ পরিস্থিতির জন্য একটি বিকল্প যা সরাসরি “ত্রুটি” স্থিতি নয় কিন্তু তারপরেও “কোন ফলাফল” নাও থাকতে পারে। তারা এক ধরণের শ্রোডিংগারের ভেরিয়েবলের মতো—তারা হয় একটি মান আছে না হয় নেই।

আসল গভীরতার জন্য, Result টাইপগুলি দেখুন, যা নিয়মিত-ফেরত এবং ত্রুটি প্যাটার্নের মধ্যে দারুণ হাইব্রিড।

দেখুন এছাড়াও

  • অফিসিয়াল Swift ত্রুটি হ্যান্ডলিং গাইড: Apple Docs
  • Swift ত্রুটি হ্যান্ডলিং সেরা অনুশীলনগুলি: RayWenderlich.com
  • Swift-এ উন্নত ত্রুটি হ্যান্ডলিং: Medium আর্টিকেল