Java中异常及异常处理

1.异常的概念

        我们在编写代码时,总不会一帆风顺,在编写的时候总会出现各种各样的问题,问题一旦出现,后果就是程序出现终止 ,我们发现这些问题共分为两类,一类是我们没有办法解决,也就是问题为错误(Error ),比如jvm丢失文件、线程中断;另一类是我们可以解决的,解决之后程序可以正常执行,这类问题成为异常。

        异常可以分为可查异常(checked exceptions)和不可查异常(unchecked exceptions),所有的异常归结到底都是从Exception类中继承过来的,如下面关系:

受查数据(IOException)和非受查数据(RuntimeException)继承于Exception类。

2.异常的处理 

        异常的处理一般用五个关键字来进行表示和处理,主要的关键字为try\catch\throw\throws\finally

1、try:用来包裹可能出现异常的代码

2、catch:用来和异常的类型进行比较,catch可以有多个,哪个比较上了,就执行哪个catch,执行完毕,继续向下执行。

  •     执行过程中try不能独立存在,try和catch必须同时使用,当jvm虚拟机开始执行try块中代码,如果没有出现任何异常,那么catch也不会执行,如果出现异常,此时将由jvm帮我们判断异常的种类,并创建异常对象,接着和每一个catch块的参数进行比较,和哪个比较上了,那么就执行此catch块,执行完毕整个try,catch结束,继续向下运行。我们没有处理异常,异常最终由虚拟机处理,虚拟机的处理就是终止程序执行,并打印堆栈信息,如下面代码:

public class Student {
    public void speak(int m)
    {
        try {
            if (m > 1000)
                throw new MyException("您输入的数大于1000");

        }catch(InputMismatchException|MyException my){}
        finally{
            System.out.println("这个程序执行结束,现在释放内存");
        }
    }

    public static void main(String[] args) {
        Student student=new Student();
        student.speak(1230);
    }
}

 3、throws:意思为抛出去,如果我们不想处理该异常,我们就将该异常抛出外面,由外面来进行处理,如果外面不处理,那么由由虚拟机进行处理,抛出语句必须写在方法申明的后面如下面句子

public class Number {
    public void count() throws Exception{
        double random1= Math.random();
        double random2=Math.random();
        double num=random1*random2;
        System.out.println("这两个数相乘的结果为:"+num);
    }
    public static void main(String[] args) {
        Number number=new Number();
        try{
            number.count();
        }catch (Exception e){
            System.out.println("您输入的数有异常");
        }finally {
            {
                System.out.println("这个程序运行结束,现在释放内存");
            }
        }
    }
}

4、finally:表示最后的、最终的,表示在任何情况下要执行代码,因为有时打开了一些资源,但后面出现了异常,此时这些资源得不到释放,就会出现内存泄漏,此时有了关键字finally,不管是否出现异常,都会执行,我们通常吧必须要执行的代码放到finally。

5、自定义异常

        表示我们自己定义的异常,只要我们继承任意一个异常类即可,通常我们继承于Exception。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值