JAVA异常

1 java异常的分类

2 java处理异常的两种方式

2.1 try…catch…finally

语法:

使用try结构扩展可能出错的代码块, 紧接try部分必须跟随catch部分或finally部分

try{

   可能出错的代码块…..

}catch(jdk定义错误类型或自定义错误类型  变量名){

    处理语句

}finally{

 

}

 

finally块必须与try块连用,finally块作用无论try中代码是否出错,finally总会执行

 

两种变形:

第一种:try..catch...finally允许嵌套;

第二种:多重catch块,catch中的错误类型,必须错误范围从小到大;

 

练习:

接收用户输入的两个整数,要求即使用户输入除数是0,我们进程也不终止;

总结:

int test1(){
  int res=0;
  try{
      return res;
}finally{
   res=3;
}
}

//调用test1()方法后返回0,原因return语句直接返回当前res为0式的值;

int test2(){
int res=0;
try{
   res=3;
   return res;
}finally{
   res=6;
  return res;
}
}
//调用test2()方法返回6,原因finally最终执行模板,所有finally中return语句最后执行;

2.2 java异常处理的第二种方式

throw, throws

throw表示强制抛出异常,用于违反业务规定,手工抛出异常;

throws用于在方法上声明异常,当调用该方法时,必须处理异常;

语法:

throw new 异常类(“错误描述”);

 

throws语法

在方法声明最后使用throws语句声明该方法包含某个异常;

注意:

throws 中的异常类型分为非检查异常以RuntimeException或其子类为主,这种异常方法被调用,可以不处理方法中声明的异常;

除了RuntimException异常类型外其他,throws后面声明的异常为检查异常,这些异常方法被调用必须处理方法中声明的异常;

例如:

import  java.io.IOException;
public class Demo4 {
    int age;
    //throws用于在方法上声明异常,当调用该方法时,必须处理异常;
    public void setAge(int age)throws  IOException {
        if(age<1){
            //throw表示强制抛出异常,用于违反业务规定,手工抛出异常;
           throw new IOException("年龄输入错误");
        }
        this.age = age;
    }

    public static void main(String[] args) {
        Demo4 m4=new Demo4();
        try {
//            //执行方法
            m4.setAge(-8);
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("over...");
    }
  /* 可以在调用时,使用throws再次抛出异常 
 public static void main(String[] args)throws Exception{
        Demo4 m4=new Demo4();
        //执行方法
        m4.setAge(-8);
        System.out.println("over...");
    }*/
}

3 自定义异常

作用,用于企业中将错误信息进行相应的格式转换;

步骤:

① 自定义一个继承异常的自定义类;

② 在构造方法中输出自定义格式的错误信息;

③ 在对应的方法中使用throw和throws语句使用自定义异常类;

例如:

//① 自定义一个继承异常的自定义类;
class MyExp extends Exception{
    //② 在构造方法中输出自定义格式的错误信息;
    public MyExp(String msg){
        //通过父类处理自定义异常信息
        super(msg);
    }
}
//③ 在对应的方法中使用throw和throws语句使用自定义异常类;
public class Demo5 {
    public static void say(int x)throws MyExp{
        if(x<10)
            throw new MyExp("你咋不带吗?");
    }
    public static void main(String[] args) {
        try {
            say(5);
        } catch (MyExp myExp) {
            myExp.printStackTrace();
        }
    }
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值