using System;
using System.Text;
namespace pgm
{
class CalculatorExceptions
{
static void Main(string[] args)
{
int num1,num2;
string operand;
Console.WriteLine("+ Add\n- Subtract\n* Multiply\n/ Division\nSelect your operation");
operand = Console.ReadLine();
Console.WriteLine("Enter any two values");
num1=Convert.ToInt32(Console.ReadLine());
num2=Convert.ToInt32(Console.ReadLine());
var opr = new operations();
try
{
switch(operand)
{
case "+":
opr.Addition(num1,num2);
break;
case "-":
opr.Subtraction(num1,num2);
break;
case "*":
opr.Multiplication(num1,num2);
break;
case "/":
opr.Division(num1,num2);
break;
}
}
catch(FormatException)
{
Console.WriteLine("Input string was not in a correct format\nResult: 0");
}
}
}
class operations{
public void Addition(int num1,int num2)
{
int res;
res = num1 + num2;
Console.WriteLine("Result: {0}",res);
}
public void Subtraction(int num1,int num2)
{
int res;
res = num1 - num2;
Console.WriteLine("Result: {0}",res);
}
public void Multiplication(int num1,int num2)
{
int res;
res = num1 * num2;
Console.WriteLine("Result: {0}",res);
}
public void Division(int num1,int num2)
{
int res;
res = num1 / num2;
Console.WriteLine("Result: {0}",res);
}
}
}
答案 0 :(得分:2)
该异常的来源正在解析:如果任何Console.ReadLine()
的格式不正确 (例如"bla-bla-bla"
),将抛出FormatException
// Potential source of FormatException
num1 = Convert.ToInt32(Console.ReadLine());
// Potential source of FormatException
num2 = Convert.ToInt32(Console.ReadLine());
简单补丁:将Convert
(出于可读性考虑,我将其更改为Parse
):
try
更好的解决方案: try {
// Potential source of FormatException
num1 = int.Parse(Console.ReadLine());
// Potential source of FormatException
num2 = int.Parse(Console.ReadLine());
var opr = new operations();
...
}
catch(FormatException) {
Console.WriteLine("Input string was not in a correct format\nResult: 0");
}
(根本没有int.TryParse
):
try .. catch