"अनुचित अवरोधक विधि कॉल" को कैसे उपयुक्त बनाया जाए?


29

मैं इस समय कोटलिन के कोरटाइन का अधिक लाभ उठाने की कोशिश कर रहा हूं। लेकिन मुझे एक समस्या का सामना करना पड़ रहा है: जब इन कोरआउट्स के अंदर मोशी या ओक् ट्टप का उपयोग किया जाता है, तो मुझे चेतावनी मिलती है:

"अनुचित अवरोधक विधि कॉल"

इन्हें ठीक करने का सबसे अच्छा तरीका क्या है? मैं वास्तव में अनुचित नहीं चाहता; ;-)


मुझे लगता है कि आप चेतावनी को दबाना नहीं चाहते हैं, क्या आप?
सईद एन्तेज़ारी

जवाबों:


12

चेतावनी उन तरीकों के बारे में है जो वर्तमान थ्रेड और कोरआउट को ब्लॉक करते हैं, उन्हें ठीक से निलंबित नहीं किया जा सकता है। इस तरह, आप कोरटाइन्स के सभी लाभों को खो देते हैं और फिर से प्रति थ्रेड के लिए एक नौकरी में डाउनग्रेड करते हैं।

प्रत्येक मामले को एक अलग तरीके से संभाला जाना चाहिए। सस्पेंडेबल http कॉल के लिए आप ktor http क्लाइंट का उपयोग कर सकते हैं । लेकिन कभी-कभी आपके मामले के लिए कोई पुस्तकालय नहीं होता है, इसलिए आप या तो अपना समाधान लिख सकते हैं या इस चेतावनी को अनदेखा कर सकते हैं।


20
चेतावनी को नजरअंदाज करना लगभग सही बात नहीं है, आप कम से कम ब्लॉकिंग कोड को चला सकते हैं withContext(Dispatchers.IO)
मार्को टोपोलनिक

2
यदि आप ब्लॉकिंग कोड चलाते हैं withContext(Dispatchers.IO)तो यह अब ब्लॉक नहीं हो रहा है और चेतावनी सही नहीं है, है ना?
नोलोमन

@ नोल्मन अच्छा सवाल है क्योंकि "कम से कम" ज्ञान को मानता है कि जो कोई यह सवाल पूछ रहा है उसके पास नहीं है। फिर भी जब आप इस रैपर को पेश करते हैं तो चेतावनी दूर नहीं जाती है।
एलेक्स

14

एक निलंबित फ़ंक्शन को कॉल करते समय आपको यह चेतावनी भी मिलती है जो @Throws(IOException::class)(कोटलिन 1.3.61) के साथ एनोटेट किया गया है । यकीन नहीं है कि इरादा है या नहीं। वैसे भी, आप उस एनोटेशन को हटाकर या उसे कक्षा में बदलकर इस चेतावनी को ठीक कर सकते हैं Exception


चलो इसे दबाने कहा जाता है, फिक्सिंग नहीं :) मुझे लगता है, स्थैतिक विश्लेषक इसे हाइलाइट करते हैं क्योंकि IOException को फेंकने वाली विधि आमतौर पर अवरुद्ध होती है और समाप्त होने के लिए कुछ मूल्यवान समय लेती है।
इवान शफरान

: मैं के बारे में IOException उपयोगी इस स्पष्टीकरण पाया discuss.kotlinlang.org/t/...
इवान Shafran
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.