Java学习day05--异常处理

Java异常处理

所有异常的父类是Throwable类,其下两个直接的子类
----Error类,比较严重的的问题,合理的应用程序不应该试图捕获;
----Exception类,表示合理应用程序可能想要捕获的条件。该类又分为两种:

  • RuntimeException类(运行时异常)
  • 除RuntimeException以外的异常类(编译时异常)

打印异常信息的常用方法

  1. e.getMessage():获取异常信息;
  2. e.toString():异常类名 + 异常信息
  3. e.printStackTrace():打印异常详细信息;【常用:在调试时】,这个不用嵌套在sout里面了。

常用异常类

  1. ArithmeticException 算数异常,如除数为0
  2. NullPointerException 空指针
  3. ArrayIndexOutOfBoundsException 数组越界
  4. InputMismatchException 匹配异常,会出现在Scanner中,Scanner有一个bug,在catch中捕获后必须重新sc = new Scanner(System.in);

异常处理语句

  1. try-catch-catch捕获异常,后面可写多个catch,如:
try{
编写可能会出现异常的代码
}catch(异常类型 e){
处理异常的代码
//记录日志/打印异常信息/继续抛出异常
}

注意:父类异常通常写在最后一个catch中,如Exception类写在最后表示实在是不知道会出现什么异常,用此类作接收。

  1. try...catch....finally捕获异常,finally里面的语句:
    // 无论是否出现异常,都会被执行
    // 通常用在try和catch中有"return"语句的情况。
    // finally中的代码会保证在try或者catch的return之前被执行。

  2. throw new 异常类名(参数);主动抛出异常

  3. throws在方法上声明异常,其格式为:
    修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{ }
    当子类重写父类方法时,throws方法总体遵循以下三条规则:

		1).无论父类方法是否抛出异常,子类方法都可以:不抛出任何异常;
		2).无论父类方法是否抛出异常,子类方法都可以:抛出任何的“运行时异常”;
		3).无论父类方法是否抛出异常,子类方法可以抛出跟父类相同的“编译期异常(或者子类异常)”,不能抛出比父类更多的编译期异常。

throw和throws的区别:

	1).throw:(抛出)
		1).用在方法中;
		2).throw后面是:new 异常对象();而且只能有一个;
		3).表示:立即抛出一个异常对象给方法的调用处;
	2).throws:(声明抛出)【常用】
		1).用在方法的声明处;
		2).throws后面是:“异常类名”,可以有多个。
		3).表示:告诉JVM,此方法内部“可能会出现某种异常”,如果运行时,真的出现异常,JVM
  1. 自定义异常类
//自定义异常类,可以继承自任意的Exception类及其子类。
class AgeException extends RuntimeException{
    public AgeException (String msg){
    super(msg);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值