• Java基础之浅谈异常与了解断言


    一、产生错误原因

    • 用户输入错误
    • 设备错误
    • 物理限制
    • 代码错误

    二、解决错误---异常

    • 在Java中异常对象都是派生于Throwable类的一个实例。
    • 我们一般将异常分为两种:①Error和②Exception
    • 如果你的程序出现了Error:是程序无法处理的错误,表示运行应用程序中较严重问题。基本上躺平吧
    • 如果你的程序出现了Exception:我们可以通过抛出异常并捕获异常来处理。

    2.1引起异常的常见问题

    派生于RuntimeException的异常包括一下问题:

    • 错误的强制类型转换
    • 数组访问越界
    • 访问null指针
    • 出现这些问题,一定是你自己的问题

    其它类异常包括:

    • 试图超越文件末尾继续读取数据
    • 试图打开一个不存在的文件
    • 试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在。

    2.2常见异常处理

    • 过程一:“抛”:一旦出现异常,就会在异常代码处生成一个对应异常类的对象,并将此对象抛出。
      一旦抛出对象后,其后的代码不在执行。(除非这个异常被捕获,这样后面的代码可以继续执行)
    • 过程二:“抓”:可以理解为异常处理方式:①try-catch-finally(自己解决) ②throws(扔给别人解决)

    三、异常的使用

    3.1如何抛出异常

    • 首先我们抛出异常通常使用throws
    public class Son {
        public void run() throws Exception{
            //若代码中,出现异常,我们可以将这个异常抛出,抛给调用者去解决这个问题。
            //可以一层一层的抛出,但是终究我们还是要捕获这个异常,解决问题。
            //有时候你也会认为,这是一个极其不负责任的做法。😄
        }
    }
    

    3.2创建异常类(自定义异常)

    • 我们需要做的很简单,定义一个派生于(继承)Exception的类,或者是Exception的某个子类。
    • 自定义异常通常包含两个构造器,一个是默认构造器,一个是包含详细描述信息的构造器
    class 自定义异常类 extends Exception {
        public 自定义异常类() {
        }
        public 自定义异常类(String message) {
            super(message);
        }
    }
    
    public class Son {
        int a = 0;
        public void sum() throws 自定义异常类 {
            if(a < 0) 
                throw new 自定义异常类("a不能小于0");
        }
    }
    

    3.3捕获异常try-catch-finally

    public void test() {
            try {
                //可能存在问题的歧义代码
            }catch (Exception e) {
                e.printStackTrace();
            }finally {
                System.out.println("一定会走的代码");
            }
        }
    
    • 我们先走try里的代码,若遇到了异常,则进入catch,将异常处理后,继续执行finally语句
    • 若try语句中又return语句,我们仍然执行完try后继续执行finally。
    • finally的语句块一定会被执行。(除非我们没有正确处理遇到的异常)
    • 若try语句块中没有任何异常,则跳过catch语句块。

    3.4throw和throws区别

    throws:throws关键字用来声明要产生的异常,通常在方法名字后面使用public void run() throws Exception
    throw:throw关键字通常抛出异常对象,作用就是抛出异常。throw new 自定义异常类("a不能小于0");

    四、简单断言

    assert关键字:

    • assert condition;assert condition :expression;
    • 断言的作用一般都是debug时候使用,如果 assert x>0;结果为true,程序继续执行,反之程序直接停止。
    • 了解即可,我这个层次接触用的较少。

    五、结尾

    • 对于异常处理内容就总结这么多,若想深入学习等待后续更新,基础部分掌握这些足矣。如果有不足之处,希望大家多多包涵,多多支持。如果有不懂的地方可以直接私信问我,欢迎来访!
    • 我将会继续更新关于Java的学习知识,感兴趣的小伙伴可以关注一下。
    • 文章写得比较走心,用了很长时间,绝对不是copy过来的!
    • 尊重每一位学习知识的人,同时也尊重每一位分享知识的人。
      😎你的点赞与关注,是我努力前行的无限动力。🤩
  • 相关阅读:
    电赛控制类PID算法实现
    【算法|动态规划No.15】leetcode1035. 不相交的线
    Day 251/300 《图解HTTP》读书笔记(三)
    正则表达式及通配符匹配问题(建议收藏)
    十七、Rust集成MQTT Client
    linux线程互斥
    kafka快速入门
    直连ChatGPT,终于可以从大陆直接访问OpenAI的API端口了
    化工集团数字化转型新契机双重预防机制数字化建设
    文件恢复软件哪个最好用?数据恢复软件,推荐这几款
  • 原文地址:https://www.cnblogs.com/lx-meteor/p/16102050.html