黑马程序员——Java中的异常处理



异常处理

 

异常概念

    程序在运行过程中发生由于硬件设备问题、软件设计错误等导致的程序异常事件。

Java等面向对象的编程语言中,异常本身是一个类,产生异常就是产生了一个异常对象。

 

异常体系图:

 

 

 

异常分类

    严重错误,无法通过处理的错误。

    运行时异常,运行时可能会报错,可以不处理。如数学异常。

编译时异常,编译时无法编译通过。如日期格式化异常。

 

异常处理

Java默认处理方式:

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

标准打印流与错误打印流不同步。

 

异常相关操作:

    创建异常对象(JDK已定义的异常会自动创建对象,自定义异常需要手动创建)

抛出异常(JDK已有定义的异常会自动抛出异常,自定义异常需要手动抛出)

 

处理异常

    程序员在有异常抛出时,异常的处理方法有两种:

        将异常捕获并处理

        声明抛出异常

    将异常捕获并处理格式:

    格式一:

       try{

需要检测的代码;

}catch(异常类  变量){

异常处理代码;

}

    格式二:

       try{

需要检测的代码;

}catch(异常类  变量){

异常处理代码;

}finally{

必须被执行代码

}

    格式三:

       try{

需要检测的代码;

}finally{

必须被执行代码;

}

 

 

多异常捕获处理:

     分别捕获分别处理,每个try对应一个catch

     分别捕获分别处理,一个try对应所有catch

     注意:大的异常不能在前边捕获

           一次捕获共同处理

     注意:不能同时捕获大的异常与小的异常

 

 

异常常见方法

    重写了toString方法

    public String getMessage()

    public void printStackTrace()

public void printStackTrace(PrintStream s)

 

声明抛出异常与抛出异常

     throws:用于声明函数抛出异常。用于函数声明。

            是异常对象的处理方式之一。

            多个异常可以同时声明抛出,用逗号分隔。

     throw:用于抛出异常对象。用于函数内容。

            当出现JDK异常对象时,JVM会自动创建一个异常对象并抛出。

自定义异常对象可以先创建异常对象,再使用throw抛出。抛出后再进行处理;或使用捕获或使用声明抛出。

 

 

自定义异常

     如果涉及其他需求,JDK没有提供相应的异常对象,则可以自己定义异常。

     定义格式:继承Exception或者RuntimeException。同时需要带参的构造方法,用于接收异常信息。

    class MyException{

 public MyException(String message){

super(message);

}

}

 

 

异常处理注意细节

     运行时异常被抛出可以不处理。即不捕获也不声明抛出。

     如果父类抛出了多个异常,子类覆盖父类方法时,只能抛出相同的异常或者是他的子集。

父类方法没有抛出异常,子类覆盖父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出。

    函数中已经出现返回语句返回值A,再在finally中修改A值,则最终的返回值仍为修改前A的值。但在该方法中A的值已经被修改了。

    finally语句只有在退出虚拟机的情况下不会被执行。

    注意不要超出异常捕获处理时的变量作用域。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值