Java学习——异常

1.异常是什么?
异常是导致程序中断执行的一种指令流,在程序运行的过程中发生的不正常事件,它会中断正在运行的程序。
合理的处理异常可以使你的程序更加具有健壮性。
2.为何要处理异常
当我们的程序出现异常的时候程序会中断

public class DivisionComputation {
    public static void main(String[] args) {
        System.out.println("start");
        System.out.println(10 / 0);
        System.out.println("出现异常");
        System.out.println("end");
    }
}

运行结果:
在这里插入图片描述
为了让程序继续运行下去,就要进行异常的处理。
3.如何处理异常
如果要想进行异常处理,在Java之中提供了3个关键字,try、catch、finally。

try{
//可能出现异常的语句
}catch(异常类型 对象){
//异常处理
}finally{
//不管是否有异常,这里的内容都执行
}

通过异常处理,即使程序中出现了异常,也可以正常执行完程序。从而使程序更加具有健壮性。
异常类中提供的printStackTrace()方法可以将异常的信息完整输出。

public class DivisionComputation {
    public static void main(String[] args){
        System.out.println("start");
        try {
            System.out.println(10 / 0);
        }catch(Exception a){
            System.out.println("出现异常");
            a.printStackTrace();
        }
        System.out.println("end");
    }
}

运行结果:
在这里插入图片描述
4.throws关键字
1>主要用于方法的声明上,当方法之中出现异常后交由被调用者处理。
2>当调用了具有throws的方法之后,不管是否出现异常,都必须使用try…catch。

public class Calculate {
    public static int division(int a,int b) throws Exception{
        return a/b;
    }
}
class TestCalculate{
    public static void main(String[] args) {
        try{
            System.out.println(Calculate.division(10,0));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

5.throw关键字
在程序之中可以直接使用throw手工抛出一个异常类的实例化对象。

public class Calculate2 {
    public static int division(int a,int b) throws Exception{
        int result=0;
        System.out.println("start");
        try{
        result=a/b;
        }catch (Exception e){
            throw e;
        }finally {
            System.out.println("end");
        }
        return result;
    }
}
class TestCalculate2{
    public static void main(String[] args) {
        try{
            System.out.println(Calculate2.division(10,0));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

6.throw和throws的区别:
throw:指的是在方法之中认为抛出一个异常类对象(这个异常类对象可能是自己实例化或者抛出已经存在的)
throws:在方法声明上使用,表示此方法在调用时必须处理异常。
7.如何定义异常
1>首先创建自定义异常类,
语法格式:
自定义异常类名 extands Exception
2>在方法中通过关键字throw抛出异常对象。
3>若是在当前抛出异常的方法中处理异常,可以用try-catch语句捕获并处理;若不是,在方法的声明处通过关键字throws指明要抛出给方法调用的异常
4>在出现异常方法的调用中捕获并处理异常。

//创建自定义异常类,继承Exception
public class Calculate3Exception extends Exception {
    public Calculate3Exception(String msg){
        super(msg);
    }
}

class Number{
    public int division(int a,int b) throws Calculate3Exception{
        if(b==0){
            throw new Calculate3Exception("除数不为0");
        }
        return a/b;
    }
}

class TestCalculate3Exception{
    public static void main(String[] args) {
        Number num=new Number();
        try{
            System.out.println(num.division(10,0));
        }catch (Calculate3Exception e){
            e.printStackTrace();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSK2580

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值