java的 异常处理

由于这个异常处理比较难,我特意抽出来发一章

try--catch:

抓取到try里面的错误以后,自动跳过try里报错语句后面的句子,去匹配catch的类型去执行

( 1)如果没有异常,执行try后则执行try/catch后面的语句

(2)可以有0个或多个catch语句,有0个或1个finally语句,但如果有try必须有catch或finally

(3)一段代码可能会引发多种类型的异常,当引发异常时,会按顺序来查看每个catchi语司,执行第—一个与异常类型见配的catch语白,其后的catch语句将被忽略,转去执行trylcatch后面的语句。

(4)大部分异常都是Exception类的子类,在catch中子类异常必须写在父类异常前面

(5)无论是否有异常都要执行finally,即使有break, returni语句

(6)如果有异常,没有catch匹配的异常类型,则继续产生异常,中断程序执行。

2,自定义异常:

①自定义Exception中的异常

 

public class IamStudent{//吃创建类定义异常
    private Integer id;//学生学号长度为10
    public void setId(Integer pId) throws IllegalArgumentException{//throws异常声明,告诉系统这里会抛出异常
        //是否长度为10
        if(pId.toString().length()==10)
        {
            id=pId;
}else{
            throw new IllegalArgumentException("长度不为10!");//抛出异常
}
}
}

import java.util.Scanner;
public class TestIamStudent{
    public void main(String args[]){
        IamStudent student=new IamStudent();
        try{
            String s=new Scanner(System.in).nextline;
            student.setId(Integer.parseInt(s));//判断长度,可能发生异常
            System.out.println("程序正常进行")
        }catch(IllegalArgumentException e){
            Shystem,out,println(e,getMessage());
        }
    }
        
}

 

②自定义用户所需异常

public class Bank{
    private money;
    public void income(int in,int out)throws BankException{
        if(in<=0|[out>=O]|in+out<0) {
            throw new BankException(in,out);
}
        int sumlncome=in+out;
        system.out.printf("本次计算出的纯收入是:%d元In",sumIncome);money=money+sumlncome;
  
    }
    public int getMoney() {
        return money;
    }
}
class BankException extend Exception{
    String Message;
    BankException(int m,int n){
        Message="入账资金"+m+"是负数或支出"+n+"是正数,不符合要求";
    }
    public String warnMess(){
        return message;
    }
}
class TestBank{
    public static void mian(String args[]){
        Bank bank=new Bank();
        try{ bank.income(200,-100);
            bank.income(400,-100);
            System.out.printf("银行目前有%d元In",bank.getMoney());
            bank.income(200,100);//发生异常
            bank.income(9999,-100);//发生异常时不会执行到
           }catch(BankException e){//异常变量
            System.out.printIn("计算收益的过程出现如下问题:");
            System.out.println(e.WarnMess());
        }
        System.out.printf("银行目前有%d元In",bank.getMoney());}
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值