JAVA语法之异常以及异常处理

JAVA语法之异常以及异常处理

目录

一、异常是什么

二、异常的分类

三、为什么要处理异常

四、怎么处理异常

五、自定义异常

 

一、异常是什么

        阻止当前方法或作用域,就是异常。

        通俗的说,异常就是使得程序正常流程中断的事件。

        比如当我们试图打开某个文件,就可能存在异常,文件损坏,文件不存在等等。

二、异常的分类

        异常都继承于Throwable类。这个类主要由两个子类构成,一个是Error类,一个是Exception类。所以我们可以将异常分为以上两类。

        异常也可以分为:可查异常、运行时异常、错误。共三种,其中运行时异常和错误统称为非可查异常。

        这里采用第二种分类简单介绍一下。

(1)      可查异常

        可查异常必须处理掉,如果不处理,编译器不会让通过。

        可以使用try catch,也可以抛出去。

(2)      运行时异常

        运行时异常并不一定要try catch。常见的有算术异常,空指针异常,数组下标越界异常等。

        之所以会有运行时异常,可以这么理解。这些异常都非常普遍,如果都需要进行捕捉的话,那代码的可读性就会变得特别差。因而JAVA中设计了运行时异常。

(3)      错误

        错误Error是系统级异常,通常是内存用光了。

        在默认设置下,在一般java程序启动的时候,最大可以使用16m的内存
如果不停的给StringBuffer追加字符,很快就把内存使用光了。抛出OutOfMemoryError错误。
与运行时异常一样,错误也是不要求强制捕捉的。

 

三、为什么要处理异常

        目的主要有三个:向用户通告错误;保存所有的工作结果;允许用户以妥善的形式退出程序。

        正确的处理异常,可以将异常提示给编程人员或者用户,使得中断了的程序以适当的方式继续运行,并保存用户的当前操作,抑或进行数据回滚,同时将占用的资源进行释放。

四、怎么处理异常

1、 使用try catch语句

        第一种,使用已知的异常类型去捕捉

        

        第二种,使用异常的父类去进行捕捉

        

        当然,也可以使用Throwable进行捕捉,这是因为Throwable是所有异常的父类。

        

        补充说明:两种多异常的捕捉方法,但要注意的是第二种从JDK7开始支持。

        

        注:下图代码省略了包名,因而是从第三行开始。

        

2、 使用try catch finally语句

        与try catch语句不同的地方在于,finally后的语句无论如何都会继续执行。

        

3、 使用throw和throws

        throws与throw这两个关键字接近,但意义不一样,先说说他们的区别:
        1. throws 出现在方法声明上,而throw通常都出现在方法体内。
        2. throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某个异常对象。

         

        使用throws表示抛出异常,例如下图中,如果除数为0的时候,抛出异常。要么在后面加上try catch语句进行捕捉并处理,要么使用throws将异常抛给更上一级去处理。这种异常之间存在关系情况也叫做异常链。

        

        使用try catch

        

        使用throws声明抛出异常:

        

        关于throws的使用:

        

        下图代码的情况是这样:
        主方法调用method1
        method1调用method2
        method2中打开文件

        那么method2中需要进行异常处理。但是method2不打算处理,而是把这个异常通过throws抛出去,那么method1就会接到该异常。

        处理办法也是两种,要么是try catch处理掉,要么也是抛出去。
        method1选择本地try catch住 一旦trycatch住了,就相当于把这个异常消化掉了,主方法在调用method1的时候,就不需要进行异常处理了

        

五、自定义异常

        当我们认为的异常并非是已知的异常的时候,我们可能就需要自定义一个异常。比如下图中定义的喝醉异常。

        

        自定义异常的定义方法跟创建一个类的方法相类似。

        提供了两种构造方法。

        1. 无参的构造方法
        2. 带参的构造方法,并调用父类的对应的构造方法

        自定义异常的处理和前面的异常相同。使用try catch或者抛出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值