C# throw Exception

C# in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C#.NET in Hindi | Page:908 | Format: PDF

BUY NOW DOWNLOAD READ ONLINE

C# throw Exception: .NET Platform हमें न केवल In-Built Exception Handling Mechanism के साथ बहुत सारे प्रकार के Exceptions से सम्बंधित Types Provide करता है, बल्कि हमें हमारी जरूरत के अनुसार नए प्रकार के Exceptions Define करने व अपनी जरूरत के अनुसार किसी Specific Situation में किसी Exception को Throw करने की भी सुविधा Provide करता है।

यानी हम हमारी जरूरत के अनुसार अपने Program में कहीं पर भी throw Keyword के माध्‍यम से Manually Exception Object Create करके अथवा किसी Predefined Exception Object को निम्नानुसार Program में Specified तरीके का प्रयोग करते हुए Throw कर सकते हैं और उस Exception को Handle करने के लिए catch Block के माध्‍यम से Exception Handlers Define कर सकते हैं:

File Name: ManualExceptionThrowing.cs
using System;

namespace CSharpExceptionHandling
{
    class MyClass {
        public static void PrintArg(string arg) {
            try {
                if (arg == null) {
                    ArgumentNullException myEx = new ArgumentNullException("arg");
                    throw myEx;
                }
                Console.WriteLine(arg);
            }
            catch (ArgumentNullException e) {
                Console.WriteLine("Message: {0}", e.Message);
            }
        }
    }

    class Program {
        static void Main() {
            string s = null;
            MyClass.PrintArg(s);
            MyClass.PrintArg("Hi there!");
        }
    }
}

// Output:
   Message: Value cannot be null.
   Parameter name: arg
   Hi there!

इस Program में हमने PrintArg() नाम का एक Method Create किया है जो कि एक String Type का Argument Accept करता हैं। जब ये Method Run होता है तो सबसे पहले यही Check करता है कि आने वाले Parameter में एक Appropriate String है या null है।

यदि Parameter के रूप में हम String Specify करते हैं, तो ये Program Normal तरीके से Run होता है, लेकिन यदि इस Method में हम Parameter के रूप में कोई ऐसा Object Pass करते हैं, जिसमें null हो, तो ये Method निम्नानुसार Code द्वारा एक Exception Object Create करके Throw करता है:

            try {
                if (arg == null) {
                    ArgumentNullException myEx = new ArgumentNullException("arg");
                    throw myEx;
                }
                Console.WriteLine(arg);
            }
            catch (ArgumentNullException e) {
                Console.WriteLine("Message: {0}", e.Message);
            }

चूंकि इस Code में try के साथ एक Catch Block भी Associated है, इसलिए जैसे ही ये Code Segment ArgumentNullException Type का Exception Object Create करके throw Statement द्वारा Throw करता है, उस Exception Object को साथ ही Associated catch Block द्वारा Catch कर लिया जाता है और Generate होने वाली Exception से सम्बंधित एक Message Display कर दिया जाता है।

जिस तरह से throw Statement को हम किसी try Block में Use करते हैं, उसी तरह से हम throw Statement को किसी catch Block में भी Use कर सकते हैं और जब हम इसे catch Block में Use करते हैं, तब इसके साथ किसी Exception Object को Specify करना भी जरूरी नहीं होता। जैसे:

File Name: ManualExceptionThrowingWithoutObject.cs
using System;

namespace CSharpExceptionHandling
{
    class MyClass {
        public static void PrintArg(string arg) {
            try {
                try {
                    if (arg == null) {
                        ArgumentNullException myEx = new ArgumentNullException("arg");
                        throw myEx;
                    }
                    Console.WriteLine(arg);
                }
                catch (ArgumentNullException e) {
                    Console.WriteLine("Inner Catch: {0}", e.Message);
                    throw;
                }
            }
            catch {
                Console.WriteLine("Outer Catch: Handling an Exception.");
            }
        }
    }

    class Program {
        static void Main() {
            string s = null;
            MyClass.PrintArg(s);
        }
    }
}

Output:
	Inner Catch: Value cannot be null.
	Parameter name: arg
	Outer Catch: Handling an Exception.

जैसाकि इस Program के catch Block में हम देख सकते हैं कि हमने बिना कोई Exception Specify किए हुए केवल throw Keyword को Specify किया है। जब हम किसी catch Block में इस तरह से केवल throw Keyword Specify करते हैं, तो Program Control Current Exception को ही फिर से Re-throw कर देता है।

यानी जिस Exception को Handle करने के लिए Program Control catch Block में पहुंचता है, इस Statement को Specify करने पर Program Control catch Block से फिर से उसी Exception को Re-Throw कर देता है। लेकिन इस तरह का Statement हम केवल catch Block में ही Use कर सकते हैं।

जब हम अपनी जरूरत के अनुसार कोई Custom Exception Throw करते हैं, तो Create किए जाने वाले System.Exception Object के Constructor का प्रयोग करके हम Create होने वाले Object की Read-Only Message Property को Set कर सकते हैं।

परिणामस्वरूप जब हम इस Throw होने वाले Exception को Associated catch Block में Catch करते हैं, तो उस catch Block में हम इस Message को Retrieve करके Display कर सकते हैं। इस प्रक्रिया को हम निम्नानुसार Program द्वारा आसानी से समझ सकते हैं:

File Name: ManualExceptionObjectMessage.cs
using System;

namespace CSharpClass
{
    class Watch {
        public byte hour { set; get; }
        public byte minute { set; get; }

        public Watch() {
            hour = 12;
            minute = 0;
        }

        public void SetTime(byte h, byte m) {
            try {
                if (h > 23)
                    throw new Exception(string.Format("Hour is {0}, which can't be more then 23", h));
                else {
                    hour = h;
                    minute = m;
                }
            }
            catch (Exception exp) {
                Console.WriteLine(exp.Message);
            }
        }

        public void DisplayTime() {
            Console.WriteLine(hour + ":" + minute);
        }
    }

    class UsingWatchConstructor {
        static void Main(String[] arg) {
            Watch hmt = new Watch();
            hmt.SetTime(30, 10);
            Console.Write("Time of the HMT Watch is: ");
            hmt.DisplayTime();
        }
    }
}

Output:
	Hour is 30, which can't be more then 23
	Time of the HMT Watch is: 12:0

जैसाकि इस Program के try Block द्वारा Specified निम्न Code द्वारा हम समझ सकते हैं, कि यदि SetTime() Method के First Parameter की Value का मान 23 से ज्यादा हो, तो try Block एक New Exception Object Create करता है और उसमें एक Custom Message Specify करके उसे throw करता है:

            try {
                if (h > 23)
                    throw new Exception(string.Format("Hour is {0}, which can't be more then 23", h));
                else {
                    hour = h;
                    minute = m;
                }
            }
            catch (Exception exp) {
                Console.WriteLine(exp.Message);
            }

throw होने वाले Exception Object को catch Block में Catch किया जाता है और जब हम इस Catch होने वाले Exception Object के Message को Display करते हैं, तो हमें वही Message प्राप्त होता है, जिसे हमने try Block में Exception Object Create करते समय Constructor में Specify किया था।

C# try catch finally
C# Exception Types

******

ये पोस्‍ट Useful लगा हो, तो Like कर दीजिए।

C# in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C#.NET in Hindi | Page:908 | Format: PDF

BUY NOW DOWNLOAD READ ONLINE

Download All Hindi EBooks

सभी हिन्दी EBooks C, C++, Java, C#, ASP.NET, Oracle, Data Structure, VB6, PHP, HTML5, JavaScript, jQuery, WordPress, etc... के DOWNLOAD LINKS प्राप्‍त करें, अपने EMail पर।

Register करके Login करें। इस Popup से छुटकारा पाएें।