2009-05-06 6 views
5

क्या कुछ उठाने और अपवाद के लिए कोई तरीका है जो अपवाद से नहीं निकलता है?क्या कोई ऐसा मामला है जहां 'बचाव वस्तु' के माध्यम से रूबी "अपवाद" प्राप्त होगा?

require 'timeout' 
begin 
    timeout(1) {sleep(50)} 
rescue StandardError => e 
    puts e.message 
end 

मैं जानता हूँ कि मैं 'बचाव अपवाद' या अधिक तेजी से, 'बचाव वस्तु' के साथ इस पकड़ कर सकते हैं, लेकिन यह मेरे लिए थोड़ा अजीब लगता है:

क्या मैं से बचने के लिए कोशिश कर रहा हूँ कुछ की तरह है ।

+2

मुझे लगता है कि आप जानते हैं कि मानक त्रुटि अपवाद से निकलती है, और उस अपवाद को बचाया नहीं जाता है, जबकि मानक त्रुटि और उसके वंशज हैं, है ना? यह आपके प्रश्न से पूरी तरह स्पष्ट नहीं है। – kch

+0

हां, मुझे बस एक अपवाद का एक उदाहरण चाहिए जो बचाव के माध्यम से बबल होगा। जैसा कि आपने कहा था, अगर आप ऐसा कुछ देते हैं जो अपवाद से नहीं निकलता है तो बार्फ़ उठाएं। क्या यह एकमात्र तरीका अपवाद उठाया जा सकता है? क्या सी एपीआई के माध्यम से उठाए गए कुछ भी एक ही प्रतिबंध हैं (फिर से, मुझे लगता है कि आप वहां से अपवाद बढ़ा सकते हैं) –

+0

मुझे सी एपीआई के बारे में कोई जानकारी नहीं है, लेकिन मुझे लगता है कि कोई व्यक्ति कुछ करने के माध्यम से कुछ करने का प्रबंधन करता है एपीआई जो रूबी स्वयं अनुमति नहीं देगी, यह एपीआई का एक अनुचित उपयोग है (और शायद एपीआई में एक बग)। तो, बहुत कल्पित। मैं बस इसे एक पास करने दूंगा। – kch

उत्तर

3

यदि आप Exception कक्षा की कोई त्रुटि नहीं उठाने का प्रयास करते हैं, तो आपको <TypeError: exception class/object expected> मिल जाएगा।

+0

धन्यवाद! मुझे यह त्रुटि मिल रही थी क्योंकि मैंने 'उपसर्ग बढ़ाया था, "मेरी त्रुटि संदेश" 'prefix +" को बढ़ाने के बजाय "मेरी त्रुटि msg" ", जहां' उपसर्ग 'एक स्ट्रिंग है। उफ़। फिक्स्ड! :) – ma11hew28

संबंधित मुद्दे

 संबंधित मुद्दे