【Java基础】异常

异常

JVM的默认处理方案
如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理
把异常的名称,异常原因及异常出现的位置等信息输出在了控制台、程序停止执行

异常处理

1.4异常处理之try…catch.…
格式:try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码:}
执行流程:
程序从try里面的代码开始执行
出现异常,会自动生成一个异常类对像,该异常对像将被提交给Java运行时系统
当ava运行时系统接收到异常对像时,会到catch中去找匹配的异常类,找到后进行异常的处理
执行完毕之后,程序还可以继续往下执行

1.5 Throwable的成员方法
方法名 说明
public String getMessage() 返回此throwable的详细消息字符串
public String toString() 返回此可抛出的简短描述
public void printStackTrace() 把异常的错误信息输出在控制台

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

Java 中的异常被分为两大类:
编译时异常和运行时异常,也被称为受检异常和非受检异常
所有的 RuntimeException类及其子类被称为运行时异常,其他的异常都是编译时异常
编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译
运行时异常:无需显示处理,也可以和编译时异常一样处理

异常处理之 throws

虽然我们通过 try…catch…可以对异常进行处理,但是并不是所有的情况我们都有权限进行异常的处理
也就是说,有些时候可能出现的异常是我们处理不了的
针对这种情况,Java提供了throws的处理方案
格式:
throws 异常类名;//只是将异常抛出 ,并未真正处理
注意:这个格式是跟在方法的括号()后面的。
编译时异常必须要进行处理,两种处理方案: try…catch…或者 throws,如果采用throws 这种方案,将来谁调用谁处理。
运行时异常可以不处理,出现问题后,需要我们回来修改代码

自定义异常

用于自定义处理不合理数据等

格式:
public class 异常类名
extends Exception {
无参构造
带参构造}
范例:
public class ScoreException extends Exception{
public ScoreException()
{ }
public ScoreException(String message){
super(message);}}
具体实例:
自定义分数范围,超出范围(小于0或大于100)则抛出异常
定义分数异常类,有参和无参构造器

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

这里用try …catch抛出异常

import java.util.Scanner;

public class ScoreText {
    public static void main(String[] args) {
        System.out.println("请输入分数:");
        Scanner scanner = new Scanner(System.in);
        int score = scanner.nextInt();
        Teacher teacher = new Teacher();
        try {
            teacher.checkScore(score);
        } catch (ScoreException e) {
            e.printStackTrace();
        }

    }
}
class Teacher{
    public void checkScore(int score) throws ScoreException{
        if(score >= 100 || score <= 0){
            throw  new ScoreException("分数有误");
        }//throw为异常提示
        else {
            System.out.println("正常");
        }
    }
}

结果如下:
请输入分数:
120
work1.Exception.userdefined.ScoreException: 分数有误

throws和 throw 的区别

throws throw
用在方法声明后面,跟的是异常类名 用在方法体内,跟的是异常对象名
表示抛出异常,由该方法的调用者来处理 表示抛出异常,由方法体内的语句处理
表示出现异常的一种可能性,并不一定会发生这些异常 执行 throw 一定抛出了某种异常

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值