मुझे इससे गुगली करने में परेशानी हो रही है, इसलिए यहाँ एक स्पष्टीकरण दिया गया है:

मैं दूसरे वर्ग के तरीकों की एक सूची को निष्पादित करना चाहता हूं, एक के बाद एक, और मेरे सभी त्रुटि से निपटने की कोशिश एक परिदृश्य की तरह होती है।

कुछ इस तरह:

try
{
    var thing1 = Worker.GetThing1(); //returns proper value, so continue
    var thing2 = Worker.GetThing2(); //throws error with message
    var thing3 = Worker.GetThing3(); //doesn't get done, stopped at 2
}
catch (ExceptionError errorMessage)
{
    MessageBox.Show(errorMessage);
}

और कार्य कुछ इस तरह दिखेंगे:

function GetThing1()
{
    if (!success)
    {
        throw ExceptionError("this is an error message.");
    }
}

समस्या यह है कि मुझे पता नहीं है कि किसी अन्य वर्ग से अपवादों को कैसे फेंकना है, या यदि ऐसा करना संभव है।

जाहिर है, यह कुछ गंभीर स्यूडोकोड है, इसलिए यदि मैं पर्याप्त स्पष्ट नहीं हो रहा हूं, तो मुझे बताएं।

0
zuddsy 29 नवम्बर 2015, 08:13

3 जवाब

सबसे बढ़िया उत्तर

अंतर्दृष्टि लोगों के लिए धन्यवाद, मैं अपने मूल कोड के साथ बहुत करीब था। यहाँ मैं के साथ समाप्त हो गया है:

class Program
{
    static void Main(string[] args)
    {
        var worker = new Worker();
        try
        {
            worker.GetThing1();
            worker.GetThing2();
            worker.GetThing3();
        }
        catch (Exception errorMessage)
        {
            Console.WriteLine(errorMessage.Message);
        }
        Console.ReadKey();
    }
}

class Worker
{
    public void GetThing1()
    {
        var success = true;
        if (!success)
        {
            throw new Exception("This is an error message!");
        }


    }
    public void GetThing2()
    {

        var success = false;
        if (!success)
        {
            throw new Exception("This is an error message!");
        }

    }
    public void GetThing3()
    {

        var success = true;
        if (!success)
        {
            throw new Exception("This is an error message!");
        }

    }
}

यह if-else सब कुछ पकड़ने की कोशिश करने की तुलना में पढ़ने में बहुत आसान है और अधिक कुशल है। धन्यवाद!

0
zuddsy 29 नवम्बर 2015, 19:19

मैंने बिंदु को स्पष्ट करने के लिए एक त्वरित कंसोल एप्लिकेशन बनाया। एक नई त्रुटि फेंकने का सिंटैक्स throw new Exception(message); कोड है:

class Program
{
    static void Main(string[] args)
    {
        try
        {
            var thing1 = Program.GetThing1(); //returns proper value, so continue
            var thing2 = Program.GetThing2(); //throws error with message
            var thing3 = Program.GetThing3(); //doesn't get done, stopped at 2
        }
        catch (Exception errorMessage)
        {
            Console.WriteLine(errorMessage.Message);
        }

        Console.ReadKey();
    }

    private static bool GetThing1()
    {
        bool success = true;

        if (!success)
        {
            // This will NOT be displayed in the console.
            throw new Exception("GetThing1 Error -> Not supposed to see this in output...");
        }

        return success;
    }

    private static bool GetThing2()
    {
        bool success = false;

        if (!success)
        {
            // This WILL be displayed in the console.
            throw new Exception("GetThing2 Error -> Expected, this has to be thrown!!!");
        }

        return success;
    }

    private static bool GetThing3()
    {
        bool success = true;

        if (!success)
        {
            // This will NOT be displayed in the console.
            throw new Exception("GetThing3 Error - > Not supposed to see this in output...");
        }

        return false;
    }
}

'सब ठीक लग रहा है' कहने वाले लोगों से, कृपया अपने बयानों का परीक्षण करें। इसके अलावा, .NET में ExceptionError नामक कोई मानक वर्ग नहीं है, आप सभी प्रकार के अपवादों को पकड़ने के लिए Exception वर्ग का उपयोग कर सकते हैं (लेकिन पोस्टर में कहा गया है कि वह छद्म कोड का उपयोग कर रहा है, इसलिए हम उस पर हथौड़ा नहीं चला सकते हैं छोटे विवरण)।

1
Francois 29 नवम्बर 2015, 05:26

मुझे लगता है कि आपने कस्टम अपवाद वर्ग बनाया है, और यदि आपका गेटअप अलग-अलग लाइब्रेरी में कार्य करता है, तो आपको इस वर्ग को कुछ सामान्य लाइब्रेरी में ले जाना चाहिए और आपको अपने दोनों पुस्तकालयों का संदर्भ देना चाहिए।

1
ITGenius 29 नवम्बर 2015, 05:49