কীভাবে সুইফটে একটি 'কেল অল' ব্যতিক্রমের বিশদটি প্রিন্ট করা যায়?


84

আমি সুইফটটি ব্যবহার করতে আমার কোড আপডেট করছি এবং আমি কীভাবে সমস্ত 'ক্যাপচার' ধরণের সাথে মেলে এমন ব্যতিক্রমের জন্য ত্রুটির বিশদটি প্রিন্ট করব তা ভাবছি। আমার বক্তব্যটি বর্ণনা করার জন্য আমি এই সুইফট ল্যাঙ্গুয়েজ গাইড পৃষ্ঠা থেকে উদাহরণটি কিছুটা সংশোধন করেছি :

do {
    try vend(itemNamed: "Candy Bar")
    // Enjoy delicious snack
} catch VendingMachineError.InvalidSelection {
    print("Invalid Selection.")
} catch VendingMachineError.OutOfStock {
    print("Out of Stock.")
} catch VendingMachineError.InsufficientFunds(let amountRequired) {
    print("Insufficient funds. Please insert an additional $\(amountRequired).")
} catch {
    // HOW DO I PRINT OUT INFORMATION ABOUT THE ERROR HERE?
}

যদি আমি একটি অপ্রত্যাশিত ব্যতিক্রম ধরা পড়ে তবে এর কারণ কী তা সম্পর্কে আমার কিছু লগ করতে সক্ষম হওয়া প্রয়োজন।

উত্তর:


122

আমি মাত্র এইটি বের করলাম। আমি সুইফ্ট ডকুমেন্টেশনে এই লাইনটি লক্ষ্য করেছি:

যদি ক্যাচ ক্লজটি কোনও প্যাটার্ন নির্দিষ্ট না করে তবে ক্লজটি মিলবে এবং কোনও স্থানীয় ত্রুটিযুক্ত ত্রুটিযুক্ত ত্রুটির সাথে কোনও ত্রুটি বাঁধবে

সুতরাং, তারপর আমি এটি চেষ্টা করেছি:

do {
    try vend(itemNamed: "Candy Bar")
...
} catch {
    print("Error info: \(error)")
}

এবং এটি আমাকে একটি সুন্দর বর্ণনা দিয়েছে।


47

থেকে সুইফট প্রোগ্রামিং ভাষা :

যদি একটি catchধারাটি কোনও প্যাটার্ন নির্দিষ্ট করে না, তবে ক্লজটি মিলবে এবং কোনও স্থানীয় ত্রুটিযুক্ত নামের সাথে কোনও ত্রুটি বাঁধবে error

অর্থাৎ, let errorএই catchধারাটিতে অন্তর্ভুক্ত রয়েছে:

do {
    // …
} catch {
    print("caught: \(error)")
}

বিকল্পভাবে, এটি মনে let constant_nameহয় এটিও একটি বৈধ প্যাটার্ন, সুতরাং আপনি এটিকে ত্রুটিটির ধ্রুবকের নাম পরিবর্তন করতে ব্যবহার করতে পারেন (নামটি errorইতিমধ্যে ব্যবহার করা থাকলে এটি সম্ভবত অনুমেয় হতে পারে):

do {
    // …
} catch let myError {
   print("caught: \(myError)")
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.