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 আর্টিকেল