我在“抛出新的异常”(“贷记金额必须大于0”)时得到异常未处理;“ 请帮帮我,我不知道该怎么办。
命名空间_11_8 { 班级帐户 { private decimal _balance;
public Account(decimal balance)
{
}
public decimal Balance
{
get { return _balance; }
set
{
if (value >= 0)
_balance = value;
else
throw new Exception("Balance cant be negative");
}
}
public virtual void Credit(decimal amount)
{
if (amount > 0)
Balance += amount;
else
throw new Exception("Creditd amount must be greater than 0");
}
public virtual bool Debit(decimal amount)
{
bool OK = true;
if (Balance - amount >= 0)
{
Balance -= amount;
OK = true;
}
else
{
Console.Write("Debit amount exceeded account balance");
OK = false;
}
return OK;
}
}
namespace _11_8
{
class Program
{
static void Main(string[] args)
{
decimal totalCredit = 0.0M;
SavingsAccount sa = new SavingsAccount(1000.25M, 0.1M);
Console.WriteLine("Start balance is {0:C}", sa.Balance);
totalCredit = sa.CalculateInterest();
Console.WriteLine("Total interest: {0:C}", totalCredit);
sa.Credit(totalCredit); //adding credit to balance
Console.WriteLine("End balance is: {0:C}", sa.Balance);
Console.WriteLine();
CheckingAccount ca = new CheckingAccount(1000.25M, 5.50M);
Console.WriteLine("Start balance is {0:C}", ca.Balance);
ca.Credit(55.25M);
ca.Debit(925.55M);
Console.WriteLine("Ending balance is {0:C}", ca.Balance);
Console.ReadLine();
}
}
}
答案 0 :(得分:1)
当您调用export default {
created: function () {
this.$root.$emit('page_title', 'Page Title')
}
}
时,由于您编写类的方式,它会抛出异常,但您没有sa.Credit(totalCredit)
它,或者处理该异常。
由于您决定抛出异常,程序将自动停止响应(如果调试,它将允许您查看堆栈跟踪)。要“处理”此异常,请使用catch
代码块。
try catch
我更关心您决定抛出try
{
Credit(0.0M); // this will throw an `Exception`, due to the value we passed
}
catch
{
Console.WriteLine("Hey! The value in credit cannot be 0.");
}
,而不是通知用户。虽然目前你的代码似乎没有用户输入,但是为这样的事情抛出Exception
并不是一个好主意。更好的选择是生成一条文本消息,指出该值太低而无法计算,因此要求重新键入新值。
答案 1 :(得分:-1)
当您致电Credit(十进制金额)时。在我们的例子中,amount必须大于0.看起来CalculateInterest是0.