java中的异常,自定义异常

一,异常(Exception)不正常

前提:在程序执行过程中,总是会出现错误,有的错误是在编码时就会出现,有的错误是在运行时出现。

这些错误都是我们程序员关注的。但是要不要处理时另外一回事。对于有些错误会导致程序不能正常执行甚至crash(崩溃)。

在JKD中,所谓的错误称之为异常,Exception,以类的方式存在。

二,异常的作用

异常的处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰

三,异常类的继承结构

Throwable

   -Excpetion

   -Error

         2.1Error

系统级别的错误,无法通过捕获来解决。一般情况下,Error不需要程序关心,程序员也无法改变。

         2.2Exception

程序级别的错误。相对Error而言,没有那么严重,而且能够处理;

比如:NullPointerException 空指针异常

异常如果需要及时处理,否则可能会引起程序的崩溃。

四,Exception有两个主要的子类:

IOException

RubtimeExcetion

异常分为两种:

受检异常/编译时异常

在编译时就会报错,必须处理。编码错误在IDEA等开发工具中可以直观的看到

非受检异常/运行时异常

在编译时没有错,不是必须处理的。但是不处理的话在循行时会报错。代码逻辑错误导致的

五,异常的处理

throw和throws:抛出,投掷

只是抛出异常,不进行处理

现实世界中,员工解决不了的问题,直接抛给领导。

              throw: 用于方法实现(在语句块中),抛出指定异常。(如登陆异常:throw new MyException("账号不存在");)

              throws:用于方法声明(在方法名后面),说明该放方法会抛出某些异常。

              此时程序员不需要处理,而是把可能发生的异常传递到了该方法的调用者。

             注意:在实际开发过程中,对于非受检异常(RuntimeException),只有在运行时才会出现异常,所以可不用throws提前抛出。

            但是对于受检异常,需要处理,如果不解决,则可以直接使用throws。

            意思就是受检异常,在eclipse写代码时就会报错,需要处理,如果不处理,就不能运行

                           非受检异常是在运行后出现的,可以先不进行处理

            这里buyFood方法是main方法调用的,buyFood只是throws,并没有解决,那么解决IOException交给main去解决。So:

            1 main方法处理

 

            2 main方法不处理,继续抛出,抛给JVM.

try-catch和try-catch-finally 处理异常

作用:将可能发生的异常的信息包裹起来,如果执行异常,就输出异常信息给用户

是真正的处理异常

 try{

                          有可能抛出异常的代码                            //如果没有异常就执行这里面的代码

                } catch(异常){

                       捕获并处理try中产生的异常,比如一般输出异常的信息    

 //如果出现异常,就执行其中代码。一般添加输出语句为System.out.print(e)    e:异常的说明信息

                       默认e.xxxx就会打印异常信息 作用:输出异常信息给用户

                }

 

 

                try{

                      有可能抛出异常的代码

                } catch(异常){

                    处理异常,比如一般输出异常的信息

                }finally{

               一些收尾的工作,比如内存释放,DB连接回收,IO的操作的关闭等。无论是否发生异常,finally 代码块中的代码总会被执行。

                }

总结:程序的执行总有可能碰到异常,处理异常的放式要么throw,要么try-catch.

自定义异常

 编写自定义异常的步骤:

1根据编写的异常类型去继承RunTimeException/Exception

2重写参数为String的方法

在自定义编译时异常继承

 5.1 自定义编译时异常继承Exception: extends Exception,指的是受检异常。

public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

 

5.2 自定义运行时异常继承RunTimeException: extends RunTimeException,指的是非受检异常。

public class MyException extends RunTimeException{
    public MyException(String message){
        super(message);
    }
} 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值