【Java笔记】(三):异常处理

异常与错误的分类

Throwable类是Java语言中所有异常和错误的超类

  • Error称为严重问题,不需要处理
  • Excepption称为异常类,他表示程序本身可以处理的问题
    • RuntimeException:在编译器检查不到,运行时出现问题
    • 非RuntimeException:编译前就必须要进行处理,否则程序无法通过编译

在这里插入图片描述

JVM的默认处理方案

如果程序出现了问题,我们又没有做任何处理,最终JVM会做默认的处理:

  • 将异常信息和出现异常的位置打印
  • 程序停止执行

异常处理try…catch

嗐,千篇一律,无需多言

try {
    //todo
} catch (Exception e) {
    e.printStackTrace();//打印异常信息
} finally {
    //todo
}

Throwable的成员方法

Message是在构造方法中进行赋值的

方法描述
getMessage()返回此异常的原因
toString()返回该异常的原因和类名
printStackTrace()将异常的类名,原因,出现异常代码的位置信息

编译时异常与运行时异常的区别

Java中异常分为两大类:编译时异常与运行时异常,也被称为受检异常和非受检异常

所有的RuntimeException类以及子类被称为运行时异常,其他的异常都是编译时异常

  • 编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译,如果使用throws,谁调用谁处理
  • 运行时异常:无需显示处理,也可以和编译时异常一样处理

异常处理throws

并不是所有情况我们都有权限进行异常的处理,有时候可能出现的异常我们是处理不了的

针对这种情况,Java提供了throws解决方案,格式是跟在方法括号后面

public void yourMethod() throw 异常类名 {
	//todo
}

异常只是被抛出当前代码块了,但是在哪里使用还是需要进行try…catch的

自定义异常类

只要我们的类继承RuntimeException或者Exception就可以成为其中一员

编写一个异常类:

public class ScoreException extends Exception {
    public ScoreException() {
        
    }
    public ScoreException(String message) {
        super(message)
    }
}

使用这个异常:

public class GenericDemo {
    public void checkScore(int score) throws ScoreException {
		if (score<0 || score>100) {
            throw new ScoreException();//使用throw抛出这个异常
        } else {
            System.out.println("分数正常!");
        }
	}
}

throws和throw的区别

throws:

  • 用在方法声明后,跟的是类名
  • 表示抛出异常,由该方法调用者来处理
  • 表示出现异常的一种可能,并不一定会发生这些异常

throw:

  • 用在方法体内,跟的是异常对象名
  • 表示抛出异常,由方法体内的语句进行处理
  • 执行throw一定是抛出了某种异常
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笼中小夜莺

嘿嘿嘿,请用金钱尽情地蹂躏我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值