java异常处理
编程难免会出现错误和异常,例如进行除法运算时被除数为零,注册账号时用户名已经被使用等等情况,这时我们就可以用到异常处理了,这样就可以让程序不至于因为一个小小的错误而直接崩溃,而是将该异常抛出然后尝试解决或者输出该错误的参数以便于查找错因
示例:
在存钱取钱的时候,难免会遇到账户余额不足的时候,这时候就可以自定义一个异常类,然后在合适的时机抛出该异常。
class withdrawmeiqian extends Exception{
private double amount;
public withdrawmeiqian(double amount){
this.amount = amount;
}
public double getAmount(){
return amount;
}
}
在以上代码中,我定义了一个异常类(extends Exception是因为所有的异常都是他的子类)withdrawmeiqian,这个类可以在构造时输入所缺少的钱,然后getAmount方法可以返回所缺少的钱。
虽然看上去有点脱裤子放屁的样子,但是毕竟是练习,可以加深我们对异常处理的李姐。
public class Ebank {
private double balance;
private int number;
public Ebank(int number){
this.number=number;
}
public void deposit(double amount){
balance +=amount;
}
public void withdraw(double amount) throws withdrawmeiqian{
if (amount<=balance){
balance-=amount;
}
else{
double needs=amount -balance;
throw new withdrawmeiqian(needs);
}
}
public double getBalance()
{
return balance;
}
//方法:返回卡号
public int getNumber()
{
return number;
}
}
public class Run_ {
public static void main(String[] args) {
Ebank nm=new Ebank(199);
nm.deposit(100);
try {
nm.withdraw(120);}catch(withdrawmeiqian e){
System.out.println("meiqianle!"+"还差"+e.getAmount()+"块钱");
e.printStackTrace();
}
}
}
在main中,我首先实例化了一个Ebank对象并指定卡号为199,然后我存了100,想取出来120块钱(做梦ing),这时对象nm就会抛出一个异常,然后被catch住,catch住的对象可以执行该异常中定义的方法,例如这个异常对象e可以执行getAmount()方法。
总结
异常的使用可以让异常处理统一化,便于管理,提高代码的可读性和可维护性,如果一个类中可能会出现一种异常,但是你自己不想在这里直接处理这个异常,那么你就可以将这个异常 抛出,然后让调用这个类的人处理,如果调用这个类的程序员也不想管,那么他可以在定义类时后面加上throws (异常名称) ,表示这个类会抛出这个异常,并交个更上面的程序员处理。
在这个例子中,我考虑到了取钱的时候可能会出现想去的数目大于存款的情况,所以我定义了一个异常类,然后定义了这个异常会在哪种情况下抛出,当我调用这个可能抛出异常的代码或者对象时,我就使用trycatch语句环绕,尝试解决问题或者给出相关的解决方案。