बनाता है मैं आगे नदी के ऊपर इसे संभाल करने में सक्षम होना एक त्रुटि के लिए एक चेतावनी बदलने की आवश्यकता (चेतावनी बीच, जिस पर मैं कोई नियंत्रण नहीं में कहीं निगल रहे हैं; त्रुटियां नहीं हैं) । ऐसा करने के लिए, मैं कर रहा हूँ निम्नलिखित:`` tryCatch` अंदर withCallingHandlers` uncatchable त्रुटि
warning_to_error = function (expr)
withCallingHandlers(expr, warning = stop)
यह महान काम करता है:
> warning_to_error(warning('foobar'))
Error in withCallingHandlers(expr, warning = stop) : foobar
दुर्भाग्य से, इस त्रुटि पूरी तरह से बनाता है uncatchable:
> try(warning_to_error(warning('foobar')))
Error in withCallingHandlers(expr, warning = stop) : foobar
In my real situation, वहाँ मेरे warning_to_error
और try
के बीच कई परतें हैं (जिसमें तर्क है कि muffl ई चेतावनियां)। मैं अपने कॉलिंग हैंडलर को पकड़ने में त्रुटि कैसे उठा सकता हूं? दुर्भाग्य से मैं in another Stack Overflow question वर्णित पुनरारंभ का उपयोग नहीं कर सकता क्योंकि stop
पुनरारंभ को परिभाषित नहीं करता है, और फिर भी मुझे फिर से पकड़ने वाले कोड पर कोई नियंत्रण नहीं होता है।
धन्यवाद, इस परिपूर्ण बनाता है चाहिए की जरूरत है समझ। मैंने वास्तव में ऐसा करने का प्रयास किया (= प्रिंटिंग/स्थिति का निरीक्षण करने के लिए स्थिति को वापस कर रहा है) लेकिन मेरे प्रयास विफल हो गए क्योंकि यह मेरे लिए ऐसा नहीं हुआ कि वर्ग 'त्रुटि' के अलावा कुछ भी होगा। ओह। –
अगर मैं कॉल स्टैक जानकारी को किसी भी तरह से खराब कर सकता हूं तो यह और भी बड़ा होगा। दुर्भाग्यवश मैं 'eval' का उपयोग करते समय भी इसे प्राप्त करने में असमर्थ हूं, 'warn_to_error' के' parent.frame() 'में निष्पादित किया गया है: स्टैक ट्रेस हमेशा' eval' में समाप्त होता है। मुझे लगता है कि यह संभव नहीं है? –
एक त्रुटि स्थिति ऑब्जेक्ट बनाएं और इसे 'sys.calls' के परिणाम को' स्टॉप 'पर पास करने से पहले संग्रहीत करें। –