Mega Code Archive

 
Categories / C# / Language Basics
 

Demonstrates defining and using a custom exception class

/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // // CustExcp.cs -- Demonstrates defining and using a custom exception class // //                Compile this program with the following command line: //                    C:>csc CustExcp.cs // namespace nsCustomException {     using System;     using System.IO;          public class CustExcpclsMain     {         static public void Main (string [] args)         {             if (args.Length < 2)             {                 Console.WriteLine ("usage: CustExcp FileName String");                 return;             }             try             {                 ReadFile (args[0], args[1]);                 Console.WriteLine (args[1] + " was not found in " + args[0]);             } // Custom exception thrown. Display the information.             catch (clsException e)             {                 Console.WriteLine ("string {0} first occurs in {1} at Line {2}, Column {3}",                                    args[1], args[0], e.Line, e.Column);                 Console.WriteLine (e.Found);                 return;             } // Check for other possible exceptions.             catch (ArgumentException)             {                 Console.WriteLine ("The file name " + args [0] +                           " is empty or contains an invalid character");             }             catch (FileNotFoundException)             {                 Console.WriteLine ("The file name " + args [0] +                                    " cannot be found");             }             catch (DirectoryNotFoundException)             {                 Console.WriteLine ("The path for " + args [0] +                                    " is invalid");             }             catch (Exception e)             {                 Console.WriteLine (e);             }         }         static public void ReadFile (string FileName, string Find)         {             FileStream strm;             StreamReader reader;             try             {                 strm = new FileStream (FileName, FileMode.Open);                 reader = new StreamReader (strm);                 int Line = 0;                 while (reader.Peek () >= 0)                 {                     ++Line;                     string str = reader.ReadLine ();                     int index = str.IndexOf (Find);                     if (index >= 0)                     {                         reader.Close ();                         strm.Close ();                         clsException ex = new clsException ();                         ex.Line = Line;                         ex.Column = index + 1;                         ex.Found = str;                         throw (ex);                     }                 }                 reader.Close ();                 strm.Close ();                 return;             }             catch (IOException e)             { // If file not found, go back and get another name                 if (e is FileNotFoundException)                     throw (e); // Code here to handle other IOException classes                 Console.WriteLine (e.Message);                 throw (new IOException());             }        }     } // Define a class derived from Exception     class clsException : Exception     {         public int Line = 0;         public int Column = 0;         public string Found = null;     } }