I am trying to have an ApplicationException exception which will show ONLY a message when input is not a number. Here is what I have right now:
static void getBookInfo(Book book)
{
bool isNumeric;
float number;
string numberInput;
Console.Write("Enter Book Title: ");
book.Title = Console.ReadLine();
Console.Write("Enter Author's First Name: ");
book.AuthorFirstName = Console.ReadLine();
Console.Write("Enter Author's Last Name: ");
book.AuthorLastName = Console.ReadLine();
Console.Write("Enter Book Price: $");
numberInput = Console.ReadLine();
isNumeric = float.TryParse(numberInput, out number);
if (isNumeric)
book.Price = number;
else
{
throw new ApplicationException
(
"This is not a number!\n" +
"Please try again."
);
}
}
Whole Program.cs after edit which works. The problem was that ApplicationException part was displaying whole printout of the exception, now instead of doing that, it shows only message part. As usually it’s something simple. 🙂
using System;
namespace Lab_6
{
class Program
{
static void Main(string[] args)
{
Address address = new Address();
address.StreetNumber = "800";
address.StreetName = "East 96th Street";
address.City = "Indianapolis";
address.State = "IN";
address.ZipCode = "46240";
Book book = new Book();
try
{
getBookInfo(book);
book.PublisherAddress = address;
book.PublisherName = "Sams Publishing";
Console.WriteLine("----Book----");
book.display();
}
catch (NegativeInputException ex)
{
Console.WriteLine(ex.Message);
return;
}
catch (ApplicationException ex)
{
Console.WriteLine(ex.Message); // I had to change so I have only this,
// instead of whole printout.
return;
}
}
static void getBookInfo(Book book)
{
bool isNumeric;
float number;
string numberInput;
Console.Write("Enter Book Title: ");
book.Title = Console.ReadLine();
Console.Write("Enter Author's First Name: ")
book.AuthorFirstName = Console.ReadLine();
Console.Write("Enter Author's Last Name: ");
book.AuthorLastName = Console.ReadLine();
Console.Write("Enter Book Price: $");
numberInput = Console.ReadLine();
isNumeric = float.TryParse(numberInput, out number);
if (isNumeric)
book.Price = number;
else
{
throw new ApplicationException
(
"This is not a number!\n" +
"Please try again."
)
}
}
}
}
Exceptions don’t show anything. That’s up to the code that catches them.
Also, you should not use
ApplicationException. Either useException, or use something more specific likeFormatException.