19异常的学习笔记

这篇具有很好参考价值的文章主要介绍了19异常的学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

异常

很重要,有利于我们平时处理问题
异常就是代表程序出现了问题
常见的异常比如说

  1. 数组越界
  2. 除法除0

异常的体系是什么

java.lang.Throwable
Error Exception
RuntimeException 其他异常

Error 代表的是系统级别的错误,也就是一旦系统出现问题,sun公司会把这些问题封装程Error对象出来
Error 是sun公司自己用的,不是给我们程序员用的,我们开发人员不用管
Exception:叫异常,它代表的才是我们程序可能出现的问题,所以,我们程序员通常会用 Exception 以及它的孩子来封装程序出现的问题。
运行时异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时出现的异常(如:数组索引越界异常)
编译时异常:编译阶段就会出现错误提醒的。(如:日期解析异常)
抓住异常,我们通过这个代码来进行抓住异常,如果 try 里面的代码是有异常的,那我们就进行捕捉,如果捕捉到,我们就可以得到这个异常信息,并输出这个异常的信息

        try {
            SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date d = date.parse("2020-11-5 11:50:90");
            System.out.println(d);
        } catch (ParseException e) {
            e.printStackTrace();
        }

自定义运行时异常

  1. 定义一个异常类继承RuntimeExceptin
  2. 重写构造器
  3. 通过throw new 异常类来创建异常对象并输出

编译阶段不报错,提醒不强烈,运行时才报错

public class exception {
    public static void main(String[] args) {
            saveAge(180);
    }
    public  static  void saveAge(int age){
        if(age>0&&age<150){
            System.out.println("年龄被成功保存"+age);
        }else {
            throw  new AgeIllegalRuntimeException("age is illegal ,your age is "+age);
        }
    }
}

我们这个新建的这个异常类我们是继承这个RuntimeException

public class AgeIllegalRuntimeException extends RuntimeException{
	//构造函数
    public AgeIllegalRuntimeException() {
    }
	//构造函数,其中这个message是输出的异常信息
    public AgeIllegalRuntimeException(String message) {
        super(message);
    }
}

抛出编译时异常

public class exception {
    public static void main(String[] args) {
            saveAge(12);
            //saveAge2(25);   //这里会直接报错,我们有两种解决办法,一种是继续往上抛
            try {
                saveAge2(160);
                System.out.println("程序正常执行");
            } catch (AgeIllegleException e) {
                System.out.println("程序异常");
                throw new RuntimeException(e);
            }

    }
    public  static  void saveAge(int age){
        if(age>0&&age<150){
            System.out.println("年龄被成功保存"+age);
        }else {
            throw  new AgeIllegalRuntimeException("age is illegal ,your age is "+age);
        }
    }
    //throws 是在这个方法中抛出异常,让该方法调用的时候出现
    //throw 跑出去一个异常对象。
    public  static  void saveAge2(int age) throws AgeIllegleException {
        if(age>0&&age<150){
            System.out.println("年龄被成功保存"+age);
        }else {
            throw  new AgeIllegleException("age is illegal ,your age is "+age);
        }
    }
}

分析上面的代码,我们可以看到这些异常的处理的时候我们发现我们可以不断的向外面抛出异常,但是一直抛出异常肯定是不可以的,因此我们需要对其进行捕获异常,利用try catch,进行记录异常,并记录处理信息文章来源地址https://www.toymoban.com/news/detail-731156.html

异常处理

1. 捕获异常,记录异常并相应合适的信息给用户
2. 捕获异常,尝试重新修复

1. 捕获异常,记录异常并相应合适的信息给用户

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ExceptionNesting {
    public static void main(String[] args) {
        try {
            test1();
        } catch (FileNotFoundException e) {
            System.out.println("文件未找到");
            throw new RuntimeException(e);
        } catch (ParseException e) {
            System.out.println("日期格式 不正确");
            throw new RuntimeException(e);
        }
    }
    public static void test1() throws FileNotFoundException, ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse("2020-10-20 12:12");
        System.out.println(date);
        test2();
    }
    public static void test2() throws FileNotFoundException {
        InputStream is = new FileInputStream("D:/meinv.png");
    }
}

2. 捕获异常并进行处理

import java.util.Scanner;

public class StrongExceptionCorrect {
    public static void main(String[] args) {
        while (true) {
            try {
                System.out.println(getMoney());
                break;
            } catch (Exception e) {
                System.out.println("你输入的价格不合适请重新输入(你输入的并不是一个double类型的变量,可能输入了字符串导致异常)");
            }
        }
    }
    public static double getMoney(){
        Scanner input = new Scanner(System.in);
        while (true){
            System.out.println("请您输入合适的价格");
            double money = input.nextInt();
            if(money>=0){
                return money;
            }else {
                System.out.println("你输入的价格是不合适的");
            }
        }
    }
}

到了这里,关于19异常的学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java学习笔记22——异常

    Throwable 是所有异常和错误的超类 error 表示严重的问题,合理的程序不应该试图捕获 Exception 表示合理的应用想要捕获的条件 Exception分为 RuntimeException 和 非RuntimeException 其中, RuntimeException 在编译期间是不检查的,出现问题后需要修改代码 非RuntimeException 编译期间必须处理,

    2024年02月07日
    浏览(36)
  • 【狂神说Java】Java零基础学习笔记-异常

    实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们的程序再跑着,内存或硬盘可能满了。等等。 软件程

    2024年02月12日
    浏览(38)
  • 菜鸟教程《Python 3 教程》笔记(19):错误与异常

    笔记带有个人侧重点,不追求面面俱到。 出处: 菜鸟教程 - Python3 错误和异常 Python 有两种错误很容易辨认: 语法错误 和 异常 。 assert (断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待

    2024年02月09日
    浏览(43)
  • 【Python学习】Python学习19- 异常处理

    目录 文章所属专区 Python学习 本章节主要说明Python的异常处理。 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所

    2024年01月19日
    浏览(34)
  • JavaSE19——file文件类

    在 Java File 类是 java.io 包中唯一代表磁盘文件本身的对象 File 类不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。 File(String path) :如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文件。 File

    2024年02月06日
    浏览(28)
  • JavaSE基础(19) super,this 关键字

    子类对象的创建过程: 子类的构造方法中,默认先调用父类的无参构造方法。如果没有显示的调用,那么隐含着super()。         可以访问父类的属性         可以访问父类的方法         指代父类的构造方法, 如果有多个,靠参数来区分。要在第一行。      

    2023年04月10日
    浏览(37)
  • Docker学习笔记19

    Docker Compose 作用: 在一个文件中定义复杂的容器应用之间的关系,用一个命令即可执行。 YAML:类似html、xml、标记语言。 YAML格式文件,资源清单文件 docker compose 命令使用yaml文件来启动容器。         start stop         down up (关闭删除容器和启动新容器) docker compose 定义

    2024年02月12日
    浏览(41)
  • LiangGaRy-学习笔记-Day19

    1、回顾知识 1.1、文件系统说明 xfs与ext4文件系统 CentOS7以上:默认的就是XFS文件系统 xfs 使用的就是restore、dump等工具 CentOS6默认的就是ext4文件系统 extundelete工具就是用于ext4系统 1.2、回顾Linux文件系统 Linux文件系统是由三个部分组成 inode 文件名 block块 Linux:文件系统类型 ex

    2024年02月08日
    浏览(42)
  • 目录IO 2月19日学习笔记

     1. lseek        off_t lseek(int fd, off_t offset, int whence);        功能:             重新设定文件描述符的偏移量        参数:             fd:文件描述符             offset:偏移量             whence:                 SEEK_SET    文件开头                 SEEK_CUR    文件当前

    2024年02月20日
    浏览(33)
  • 【javaSE】认识异常(1)

    hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥💥,如果发现这篇文章有问题的话,欢迎各位评论留言指正,大家一起加油!一起chin up!👍👍  💥 个人主页: E绵绵的博客 💥 所属专栏: JAVASE题目练习

    2024年04月26日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包