当前位置: 首页 > article >正文

Java异常2

异常抛出的两种形式:

  1. 系统隐式抛出;int n=10/0;—隐式抛出一个异常;
  2. 手动抛出异常:throw new Exception();
import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
       
        Student1 st1=new Student1();
        st1.setId(10);
        st1.setName("小楼");
        System.out.println("输入性别");
        st1.setSex(sc.nextLine());
        st1.toString();

    }
}


    public Student1(String name, int id, double score) {
        this.name = name;
        this.id = id;
        this.sex = sex;

    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getScore() {
        return sex;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setSex(String sex) {
        // 方法一,隐式抛出异常
        // if (!"男".equals(sex)&&!"女".equals(sex)) {
        // this.sex="男";
        // } else {
        // this.sex=sex;
        // }
        // 方法二:手动抛出异常
        if (!"男".equals(sex) && !"女".equals(sex)) {
            try {
                // 这种运行异常,程序不要求必须处理
                throw new RuntimeException();// 手动抛出异常
            } catch (Exception e) {
                // TODO: handle exception
                System.out.println("输入的性别不合理");
            }
        } else {
            this.sex = sex;
        }
    }

    public String toString() {
        return "Student [name=" + name + "id=" + id + "score=" + sex + "]";

    }

}

异常处理的两张方式
1、try……catch
2,throws

throws:方法声明异常,如果多个异常类型,用逗号分隔
public void setId(int id) throws InputMismatchException,ArithmeticException{}

import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        Student1 st1 = new Student1();
        try {
            st1.setId(-1);// 此方法声明了异常,主方法进行处理
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

        st1.setName("小楼");
        System.out.println("输入性别");
        st1.setSex(sc.nextLine());
        st1.toString();

    }
}

class Student1 {
    private String name;
    private int id;
    private String sex;

    public Student1() {

    }

    public Student1(String name, int id, double score) {
        this.name = name;
        this.id = id;
        this.sex = sex;

    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getScore() {
        return sex;
    }

    public void setId(int id) throws Exception{//声明异常
        if (id>200||id<0) {
            throw new Exception();
        }else{}
        this.id = id;
    }




    public void setName(String name) {
        this.name = name;
    }

    public void setSex(String sex) {
        // 方法一,隐式抛出异常
        // if (!"男".equals(sex)&&!"女".equals(sex)) {
        // this.sex="男";
        // } else {
        // this.sex=sex;
        // }
        // 方法二:手动抛出异常
        if (!"男".equals(sex) && !"女".equals(sex)) {
            try {
                // 这种运行异常,程序不要求必须处理
                throw new RuntimeException();// 手动抛出异常
            } catch (Exception e) {
                // TODO: handle exception
                System.out.println("输入的性别不合理");
            }
        } else {
            this.sex = sex;
        }
    }

    public String toString() {
        return "Student [name=" + name + "id=" + id + "score=" + sex + "]";

    }

}

异常的两种类型
1、RuntimeException;程序不要求必须处理
2、cheked异常,检查异常,程序运行之前必须做好处理措施,否者编译报错,Unhandled Exception type Exception

异常处理机制的好处
1、程序不会中断,处理异常之后可以继续执行
2、可以向用户提供友好的异常信息
3、将程序的正常流程与错误处理分开,有利于代码的编写与维护
/*
*方法的重写:子类声明的异常类型必须和父类一致,或是父类异常类型的子类。
*
*/

/*
*自定义异常:1.继承系统的异常类;
*public class SexException extends Exception {

   }
   
   2.添加构造方法;
           public SexException() {
           
   }

   public SexException(String message) {
           super(message);
           
   }

*/

*throw和throws:
*1)所在位置不一样:throw出现在方法体里;

  •         throws出现在方法声明处;
    

*2)后面跟的内容不一样:throw new Exception();异常对象;跟一个对象;

  •           throws Exception;异常类型;跟多个异常类型,用逗号分隔;
    

*3)功能不一样:throw:抛出异常;

  •      throws:当作异常处理方式,向上抛出异常。
    

1.运行时异常:
java.lang.ArrayIndexOutOfBoundsException;
java.lang.NullPointerException;
java.util.InputMismatchException;
java.lang.ArithmeticException;
java.lang.ClassCastException;

2.检查异常:
ClassNotFoundException
IOException


http://www.kler.cn/a/372514.html

相关文章:

  • 《DIY项目之“一只眼狗链”》:视频方案
  • 尽可能连续的基于挤压的表面模型制造
  • Java中的多态性是什么?
  • Unity可视化Shader工具ASE介绍——自定义函数
  • GRE Over IPsec(华三)
  • unity后端kbengine用DOTween让 移动同步丝滑
  • 计算机网络-常用网络命令和工具
  • 华为配置手工负载分担模式链路聚合实验
  • 树莓派4处理器超频指南
  • 输电线路火灾隐患监测系统功能与应用是什么?
  • 基于Springboot+微信小程序的任务打卡系统(含源码数据库)
  • 网络搜索引擎Shodan(2)
  • CSS - grid制作表格
  • Java项目实战II基于微信小程序的计算机实验室排课与查询系统(开发文档+数据库+源码)
  • 深入理解所有权与借用——借用与生命周期管理
  • Linux中gcc的使用
  • Android中Logcat长日志打印不全问题正解
  • HTML入门教程6:HTML段落
  • LeetCode 2058.找出临界点之间的最小和最大距离
  • ChatGPT-o1辅助论文写作的优势及12个方向提示词分享
  • camera和lidar外参标定
  • 线性代数(1)——线性方程组的几何意义
  • Mongodb-Plus 轻松上手
  • LSTM:解决梯度消失与长期依赖问题
  • 凌雄科技打造DaaS模式,IT设备产业链由内而外嬗变升级
  • Spring Cloud --- 引入Seata分布式事务