JAVA高级基础(24)---throw抛出异常及Throw和Throws的区别和自定义异常

当异常发生时,获取异常信息

    1、e.printStackTrace();打印异常的堆栈信息
                    java.lang.ArithmeticException: / by zero(by zero就是它的字符串信息)
                    at org.lanqiao.exception.demo.FinallyDemo.main(FinallyDemo.java:10)
    2、e.getMessage();返回异常的信息字符串  / by zero

异常的分类

  1. 编译期异常都是Exception的直接子类
  2. 运行时异常都是RuntimeException的子类

主动抛出异常

在方法内部,throw new 异常();

  • new Exception ("异常信息的描述")就称为主动抛出一个编译期异常
  • new RuntimeException("异常信息的描述")    就称为主动抛出一个运行时异常

Throws 和Throw的区别:(面试题)

  1. 从声明的位置:Throws 声明抛出一个异常  在方法上;Throw  声明抛出一个异常  在方法内
  2. 抛的目标:Throws 抛出的是异常的类型;Throw 抛出的是异常的对象
  3. 抛出的异常数量:Throws 可以抛出多种类型的异常,不同的异常类型间,使用逗号分割;Throw 以此只能抛出一个异常对象
  4. 异常的发生:Throws 表示方法有可能存在一下异常,但实际并不一定回发生; Throw 表示抛出一个异常对象,所以在执行该方法的时候,就一定会抛出异常

异常的处理策略

    对于编译期异常必须进行处理,如果不处理,程序会报错,无法执行。

如何处理:
            如果自己很清楚该异常的处理,则自己处理,就不需要将异常暴露出来
            如果你自己不清楚该异常如何处理,并且你需要让方法的调用者清楚当前方法存在异常。那么就不需要自己处理,直接将异常抛出给方法的调用者,有方法的调用者来决定处理的方式。

自定义异常

举例:输入学生年龄的时候,0--100 如果不在该范围之内,则表示输入的年龄是一种异常。

自定义编译期异常:
 

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

自定义运行时异常 :  

    public class MyRuntimeException extends RuntimeException{    
        public MyRuntimeException() {
            super();
            
        }
        public MyRuntimeException(String message) {
            
            super(message);
        }
    }        

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值