मेरे पास ओपी के समान प्रश्न था। चूंकि किसी ने वास्तव में प्रश्न का उत्तर नहीं दिया क्योंकि उसने पूछा (और मैं भी), यहां मेरा योगदान दिया गया है।
स्विफ्ट 3 और एक्सकोड 8.3.3 में आप व्यक्तिगत अपवादों का इलाज करने के लिए निम्नानुसार करेंगे। नीचे मैं आपको FileManager के साथ एक उदाहरण दूंगा।
सबसे पहले आपके पास विधि में जो भी त्रुटि फेंकता है उसे पकड़ने के लिए केवल एक ही पकड़ ब्लॉक होगा। फिर आप उस त्रुटि को एनएसईआरआरआर के रूप में डालेंगे। स्विफ्ट में त्रुटि प्रोटोकॉल के विपरीत, एनएसईआरआरआर एक वास्तविक त्रुटि वर्ग है। फिर आप उस त्रुटि कोड को स्विच स्टेटमेंट में निकाल सकते हैं। आपको यह जानना होगा कि कौन सा डोमेन उस विधि से त्रुटि फेंकता है और फिर उचित शीर्षलेख फ़ाइल में त्रुटि कोड ढूंढता है।
मेरे उदाहरण में नीचे, फ़ाइल संबंधित त्रुटियों NSCocoaErrorDomain में फेंक दिया जाता है और इन त्रुटियों कोड परिभाषित कर रहे हैं/फाउंडेशन/FoundationErrors.h में सूचीबद्ध।अपने कंप्यूटर में, वे
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/FoundationErrors.h
MacOS क्षुधा के लिए
पर स्थित है और
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers/
iPhone क्षुधा के लिए
पर कर रहे हैं।
let home = FileManager.default.homeDirectoryForCurrentUser
let file = home.appendingPathComponent("file")
do {
let loadedString = try String(contentsOf: file)
}
catch {
let realError = error as NSError // As weird as it looks, Xcode actually wants this forced conversion
print(realError.localizedDescription)
switch realError.code {
case 257: // No permission
handleNoPermission()
case 260: // File not found
handleFileNotFound()
default:
handleUndefinedError()
}
}
.localizedDescription
अपने उपयोगकर्ता की भाषा है कि त्रुटि के बारे में में एक उपयोगकर्ता के अनुकूल संदेश है:
तो यहाँ एक उदाहरण है। अगर फ़ाइल ऊपर नहीं मिली है तो यह प्रिंट करता है: The file “file” couldn’t be opened because there is no such file.
अंग्रेजी में। इसका उपयोग सीधे आपके उपयोगकर्ता को मौजूद त्रुटि संवादों में किया जाना है।
तुम भी क्या त्रुटि प्रत्येक डोमेन यहाँ से फेंक दिया जाता है के बारे में अधिक जानकारी प्राप्त कर सकते हैं: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/ErrorObjectsDomains/ErrorObjectsDomains.html
Unfortanely, आप dokumentation (एपीआई) की जांच करने के लिए है। सावधान रहें, कोई अपवाद फेंकने में कोई त्रुटि नहीं है। यदि आप अपने कोड के प्रवाह को व्यवस्थित करने के तरीके की तलाश में हैं, तो इसके बजाय उचित जांच का उपयोग करें। फेंकने की त्रुटि पकड़ना आपके द्वारा पुनर्प्राप्त करने का आखिरी मौका है, आप अपवाद से पुनर्प्राप्त नहीं कर पा रहे हैं। – user3441734
[यह संबंधित प्रश्न और स्वीकृत उत्तर भी देखें।] (Http://stackoverflow.com/questions/31977738/how-to-find-the-kind-of-errors-a-method-may-throw-and- पकड़-इन-इन-स्विफ्ट) – Suragch