Unhandled exception in mscorlib

Discovered by WCF and, therefore, began to study it. This is a C # console application. The code works fine except when I try to delete. If I enter an amount of the wrong type, it detects (catches), informs me of the incorrect input and sends it back to the menu prompt. This is wonderful and dandy, until I get to the part where I try to remove more dosha than mine (balance). Presumably, I should have reported that I did not have enough funds to leave so much. Instead, I get the following:

An unhandled exception of type "System.FormatException" occurred in mscorlib.dll

Where am I wrong?

the main

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; namespace BankAccountClient { class Program { static void Main(string[] args) { BankAccountClient.ServiceReference1.ServiceClient client = new ServiceReference1.ServiceClient(); bool done = false; do { Console.WriteLine("Select one of the following:"); Console.WriteLine("\t1 -- Withdraw"); Console.WriteLine("\t2 -- Deposit"); Console.WriteLine("\t3 -- Balance"); Console.Write("Enter Your selection (0 to exit): "); string strSelection = Console.ReadLine(); int iSel; try { iSel = int.Parse(strSelection); } catch (FormatException) { Console.WriteLine("\r\nWhat?\r\n"); continue; } Console.WriteLine("\nYou selected " + iSel + "\n"); switch (iSel) { case 0: done = true; break; case 1: int balance = client.Balance(); int amount; //WCF Withdraw Console.Write("How much would you like to withdraw?: "); try { amount = int.Parse(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("\r\nInvalid input. Must be an integer\r\n"); continue; } if (amount > balance) { Console.WriteLine(String.Format("\r\nNot enough funds to withdraw ${0}\r\n"), amount); continue; } else client.Withdraw(amount); Console.WriteLine(String.Format("\nCurrent balance is ${0}\n", client.Balance())); break; case 2: //WCF Deposit Console.WriteLine("Deposit();"); break; case 3: //WCF Balance Console.WriteLine(String.Format("Current balance is ${0}", client.Balance())); break; default: Console.WriteLine("You selected an invalid number: {0}\r\n", iSel); continue; } Console.WriteLine(); } while (!done); Console.WriteLine("\nGoodbye!"); } } } 

WCF Service (Short)

 public class Service : IService { private static int balance; public void Withdraw(int value) { balance -= value; } public void Deposit(int value) { balance += value; } public int Balance() { return balance; } } 
+4
source share
2 answers

You need to move the amount to the String.Format method on this line

 Console.WriteLine(String.Format("\r\nNot enough funds to withdraw ${0}\r\n"), amount); 

So,

 Console.WriteLine(String.Format("\r\nNot enough funds to withdraw ${0}\r\n", amount)); 
+2
source

You put the brackets in the wrong place. Change your output as follows:

 Console.WriteLine(String.Format("\r\nNot enough funds to withdraw {0}\r\n", amount)); 
+1
source

Source: https://habr.com/ru/post/1393410/


All Articles