Saturday, 28 January 2017

EXCEPTION ABUSE AND HOW TO RESOLVE IN C#

Exception Handling abuse


Exceptions are unforseen errors that occur when a program is running. For example, when an application is executing a query, the database connection is lost, Exception is generally used to handle scenarios.


Using exception handling to implement program logical flow is bad and is termed as exception handling abuse.

------------------------------------------------------------------------------------------------------------------------
using System;
using System.IO;

namespace ConsoleApplication4
{
    class Program
    {
        public static void Main()
        {
            try
            {
                Console.WriteLine("Please enter Numarator");
                int Numarator = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine("Please enter Denaminator");
                int Denaminator = Convert.ToInt32(Console.ReadLine());

                int Result = Numarator / Denaminator;

                Console.WriteLine("Result = {0}", Result);
                Console.ReadLine();
            }
            catch(FormatException)
            {
                Console.WriteLine("Please enter valid number ");
                Console.ReadLine();
            }
            catch(OverflowException)
            {
                Console.WriteLine("Only numbers beteen {0} && {1}", Int32.MinValue, Int32.MaxValue);
                Console.ReadLine();
            }
            catch(DivideByZeroException)
            {
                Console.WriteLine("Denominator cannot be Zero");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

        }
    }
}
=======================================================================

EXCEPTION HANDLING ABUSE RESOLVED..

CORRECT WAY TO USE EXCEPTION HANDLING AFTER VALIDATION


using System;
using System.IO;

namespace ConsoleApplication4
{
    class Program
    {
        public static void Main()
        {
            try
            {
                Console.WriteLine("Please enter Numarator");
                int Numarator;
                bool IsNumaratorConversionSuccessful = Int32.TryParse((Console.ReadLine()), out Numarator);

                if (IsNumaratorConversionSuccessful)
                {
                    Console.WriteLine("Please enter Denominator");
                    int Denominator;
                    bool IsDenominatorConversionSuccessful = Int32.TryParse((Console.ReadLine()), out Denominator);

                    if (IsDenominatorConversionSuccessful && Denominator != 0)
                    {
                        int Result = Numarator / Denominator;

                        Console.WriteLine("Result = {0}", Result);
                        Console.ReadLine();
                    }
                    else
                    {
                        if (Denominator == 0)
                        {
                            Console.WriteLine("Denominator cannot be Zero");
                            Console.ReadLine();
                        }
                        else
                        {
                            Console.WriteLine("Denominator should be valid number between {0} && {1}", Int32.MinValue, Int32.MaxValue);
                            Console.ReadLine();
                        }
                    }

                }
                else
                {
                    Console.WriteLine("Numarator should be valid number between {0} && {1}", Int32.MinValue, Int32.MaxValue);
                    Console.ReadLine();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
        }
    }
}



1 comment: