异常的应用

需求:写一个方法,给20个学生接受考试成绩,

    **如果考试成绩的范围在0-100之间则属于正常,否则属于异常/获取0-100之间的分数**

自定义异常块

package com.practice;

public class YiChang extends RuntimeException{
    private String message;

    public YiChang() {
    }

    public YiChang(String message) {
        this.message = message;
    }

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

学生类

package com.practice;

public class Student {
    private  int store;
    String name;

    public Student() {
    }

    public Student(int store) {
        this.store = store;
    }

    public Student(int store, String name) {
        this.store = store;
        this.name = name;
    }

    public int getStore() {
        return store;
    }

    public void setStore(int store) {
        this.store = store;
    }

    @Override
    public String toString() {
        return "Student{" +
                "store=" + store +
                ", name='" + name + '\'' +
                '}';
    }
}

main方法

package com.practice;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        /*需求:写一个方法,给20个学生接受考试成绩,
        如果考试成绩的范围在0-100之间则属于正常,否则属于异常*/

        //获取0-100之间的分数

        List list=new ArrayList();
        //创建20个学生,并给学生添加成绩
        for (int i = 0; i < 3; i++) {
            Student student=new Student();
            student.name=""+(i+1);
            System.out.println("给第"+student.name+"录入分数");
            student.setStore(getScore());
            //将学生添加到集合中进行保存
            list.add(student);
        }
        System.out.println(list);



    }
   public static int getScore(){
       Scanner sc=new Scanner(System.in);
        int score=sc.nextInt();
        try{ if (score < 0 || score > 100) {
            throw new YiChang("分数格式错误");
             }
        } catch(Exception e){
            System.out.println("输入错误,请重新输入!!");
                score=getScore();//递归思想
        }
        return score;
    }
}

关于运行时期异常和编译期异常的特点

编译期异常的特点:必须处理

运行时期异常的特点:方法声明上抛出异常,方法中无需throw声明,调用者也无需处理,运行时异常一旦产生,必须修改代码!!!

throw 和throws的异同

两者都没有真正的处理异常,throw用来制造异常(即异常一定会有),在方法中制造异常,谁调用这个方法谁就处理异常(用try…catch处理)
throws:抛异常,在方法声明上声明方法可能有异常产生,可以同时抛多个异常(异常不一定会发生)

final finally finalize三者之间的区别和联系

三者之间没有任何关联
final 用来修饰类,方法,变量, 修饰的类不能被继承,修饰的方法不能被重写,修饰的变量变常量
finally在处理异常时一定会执行的代码,用来释放资源。
finalize:object类中国的一个方法名称用来进行垃圾回收。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值