Java关于异常处理

异常就是java程序在编译和运行过程中出现的错误

异常的根父类:Throwable

        Error:程序员不能处理的错误。例如电脑坏了、数据库崩溃、服务器宕机

        Exception:程序员能够处理的异常。

                编译时异常:执行javac编译时出现的异常,必须马上处理。

                运行时异常:执行java运行时候出现的异常,出错了,查看错误信息,回头修改代码。

1、jvm默认是如何处理异常的。

答:main函数收到这个问题时,有两种处理方式

        a. 自己将该问题处理,然后继续运行。

        b. 自己没有针对的处理方式,只有交给调用main的jvm来处理

        jvm有一个默认的异常处理机制,就将该异常进行处理,并将该异常的名称、异常的信息,异常出现的位置打印在控制台上,同时将程序停止运行。

2、自己处理:try...catch...finally

        try:可能出错的代码

        catch:一旦出错,处理的代码,捕获异常(捕获错误)

        finally:一般用于关闭资源。

        (多个catch同时出现的时候,最大的异常必须放在最后一个)

            一般被finally控制的语句体一定会执行。作用:用于释放资源,在IO流操作和数据库操作中会见到。

3、交给别人处理:  throws:抛出异常

        javaee开发:底层开发,一般抛出异常。

        安卓开发:自己处理,把错误隐藏。

4、throws和throw的区别:

        a. throws

                用在方法声明后面,跟的是异常类名

                可以跟多个异常类名,用逗号隔开

                表示声明异常,由3该方法的调用者来处理

        b. throw

                用在方法体内,跟的是异常对象名

                只能抛出一个异常对象名

                表示抛出异常,由方法体内的语句处理

5、自定义异常

        运行异常都是RuntimeException的子类

        ArithmeticException:除0异常

        ClassCastException:类型转换异常

        NullPointerException:空指针异常

        ConcurrentModificationException:并发修改异常

        IndexOutOfBountsException:越界异常

                ArrayIndexOutOfBoundsException

                StringIndexOutOfBountsExceptions

除RuntimeException都是编译异常,如ParseException解析异常、IOException

自定义异常:1、继承Exception 2、继承RuntimeException

6、面试题:final、finally、finalize的区别

final 作为修饰符

        修饰变量,变量会变为常量,一旦赋值,不能被修改

        修饰方法,方法不能被重写

        修饰类,类不能被继承

finalize 作为方法

        当垃圾回收器运行的时候,会自动调用该方法

finally 作为语句(try...catch...finally语句中的一部分)

        一般放在finally中的语句一定会执行,所以一般用于关闭资源

7、面试题:如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return之前还是在return之后?

答:会执行,会在return之前。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值