(每日持续更新)jdk api之NotActiveException基础、应用、实战

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿,每天都会整理到12点,为了就是能让大家能够真正了解该技术栈的真正原理,最终从程序员成为一名真正的架构师,写的不一定是全站做好的,但是是全站最用心的~。

以后我会推出一些列的文章,每天都会更新,每天进步一点点,发布顺序【java的api基础、应用、实战】->【java开源技术栈及源码分析】->【java开源技术栈整合】->【java低代码开发平台的建设】

关注【架构师成长之道】 输入“架构师视频课程”,即可免费获得全套架构师全套课程

一、java.io

1.37 NotActiveException

NotActiveException 是 Java 中的异常类,它继承自 ObjectStreamException。通常,NotActiveException 表示对象没有处于预期的活动状态,例如,在尝试访问不处于活动状态的对象时抛出此异常。

以下是 NotActiveException 的基本介绍:

NotActiveException 介绍:
所有字段:
  • private static final long serialVersionUID:序列化版本 ID。

构造方法:
  • NotActiveException(String reason) 使用指定的详细消息构造一个 NotActiveException 对象。

方法摘要:
  • 无特定的方法,继承自父类。

简单使用例子:

以下是一个简单的例子,演示了 NotActiveException 的使用。请注意,这是一个简单的演示,并不是在实际项目中常见的使用方式:

javaCopy code
import java.io.*;
​
public class NotActiveExceptionExample {
​
    public static void main(String[] args) {
        try (ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("data.bin"))) {
​
            // 尝试在非活动状态下写入对象,抛出 NotActiveException
            MyObject myObject = new MyObject("Example");
            outputStream.writeObject(myObject);
​
        } catch (IOException e) {
            if (e instanceof NotActiveException) {
                System.err.println("NotActiveException: Object is not in an active state.");
            } else {
                e.printStackTrace();
            }
        }
    }
​
    static class MyObject implements Serializable {
        private String name;
​
        public MyObject(String name) {
            this.name = name;
        }
    }
}

在这个例子中,我们创建了一个 ObjectOutputStream,然后尝试将一个非活动状态的对象写入文件。由于对象不是在活动状态下,所以抛出了 NotActiveException。在实际项目中,你通常不会直接处理 NotActiveException,而是通过检查对象的状态来预防它的发生。

应用场景

NotActiveException 的使用相对较少,因为它通常是由于序列化或反序列化过程中的一些错误或状态问题引起的。以下是一些可能的应用场景及相应的代码实现:

应用场景 1: 对象序列化时发生 NotActiveException
javaCopy code
import java.io.*;
​
public class NotActiveExceptionExample {
​
    public static void main(String[] args) {
        try (ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("data.bin"))) {
​
            // 尝试在非活动状态下写入对象,抛出 NotActiveException
            MyObject myObject = new MyObject("Example");
            outputStream.writeObject(myObject);
​
        } catch (IOException e) {
            if (e instanceof NotActiveException) {
                System.err.println("NotActiveException: Object is not in an active state.");
            } else {
                e.printStackTrace();
            }
        }
    }
​
    static class MyObject implements Serializable {
        private String name;
​
        public MyObject(String name) {
            this.name = name;
        }
    }
}

在这个例子中,我们创建了一个 ObjectOutputStream,然后尝试将一个非活动状态的对象写入文件。由于对象不是在活动状态下,所以抛出了 NotActiveException

应用场景 2: 处理反序列化时的 NotActiveException
javaCopy code
import java.io.*;
​
public class NotActiveExceptionDeserializationExample {
​
    public static void main(String[] args) {
        try (ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("data.bin"))) {
​
            // 尝试反序列化对象,处理可能的 NotActiveException
            try {
                Object object = inputStream.readObject();
                if (object instanceof MyObject) {
                    System.out.println("Deserialization successful: " + ((MyObject) object).getName());
                }
            } catch (ClassNotFoundException | NotActiveException e) {
                if (e instanceof NotActiveException) {
                    System.err.println("NotActiveException: Object is not in an active state during deserialization.");
                } else {
                    e.printStackTrace();
                }
            }
​
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
​
    static class MyObject implements Serializable {
        private String name;
​
        public MyObject(String name) {
            this.name = name;
        }
​
        public String getName() {
            return name;
        }
    }
}

在这个例子中,我们创建了一个 ObjectInputStream,然后尝试反序列化一个对象。如果在反序列化过程中对象处于非活动状态,会抛出 NotActiveException,我们在代码中捕获并处理这个异常。

请注意,实际项目中对 NotActiveException 的处理通常是在更高级别的逻辑中,而不是在直接的序列化或反序列化代码中。

实战例子

在实际项目中,直接使用 NotActiveException 的场景相对较少。然而,你可能会在某些涉及对象序列化和反序列化的场景中遇到这个异常。以下是一个简化的实战例子,演示了在项目中可能会遇到 NotActiveException 的情况:

项目实战例子:使用对象序列化保存和加载数据

假设你有一个包含学生信息的 Student 类,你希望将学生对象保存到文件并从文件加载。在保存和加载过程中,可能会遇到 NotActiveException,因此你需要处理这种情况。

javaCopy code
import java.io.*;
​
public class SerializationProjectExample {
​
    public static void main(String[] args) {
        String fileName = "students.ser";
​
        // 模拟保存学生信息到文件
        saveStudentsToFile(fileName);
​
        // 模拟从文件加载学生信息
        loadStudentsFromFile(fileName);
    }
​
    private static void saveStudentsToFile(String fileName) {
        try (ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(fileName))) {
            Student student1 = new Student("John", 20);
            Student student2 = new Student("Alice", 22);
​
            outputStream.writeObject(student1);
            outputStream.writeObject(student2);
​
            System.out.println("Students saved to file successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
​
    private static void loadStudentsFromFile(String fileName) {
        try (ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(fileName))) {
            try {
                while (true) {
                    Student student = (Student) inputStream.readObject();
                    System.out.println("Loaded student: " + student);
                }
            } catch (ClassNotFoundException | NotActiveException e) {
                if (e instanceof NotActiveException) {
                    System.err.println("NotActiveException: Object is not in an active state during deserialization.");
                } else {
                    e.printStackTrace();
                }
            }
        } catch (IOException e) {
            if (e instanceof EOFException) {
                System.out.println("End of file reached.");
            } else {
                e.printStackTrace();
            }
        }
    }
​
    static class Student implements Serializable {
        private String name;
        private int age;
​
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
​
        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
}

在这个例子中,SerializationProjectExample 类包含了两个方法:saveStudentsToFileloadStudentsFromFileStudent 类是一个简单的包含学生信息的可序列化类。在保存学生信息到文件时,我们使用 ObjectOutputStream,而在加载学生信息时,我们使用 ObjectInputStream。在加载学生信息的过程中,由于文件可能包含不同的对象,我们在捕获 NotActiveException 异常时输出相应的错误信息。

请注意,这个例子是为了演示 NotActiveException 而设计的,实际项目中可能需要更复杂的逻辑和更严密的异常处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/364746.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重写Sylar基于协程的服务器(2、配置模块的设计)

重写Sylar基于协程的服务器(2、配置模块的设计) 重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务器(1、日志模…

idea搭建spring5.3.x源码环境

1.写在前面的话 碰到了不少想阅读或者学习spring源码的同学,但是第一步搭建这个源码阅读环境就能难倒了一大批人。下面我就以spring5.3.x这个源码分支,来具体演示一下搭建过程。 2. 下载源码 下载源码这一步,说实话,由于某些原…

Django模板(一)

一、基本规则 作为一个Web框架,Django需要一种方便的方式来动态生成HTML。最常用的方法依赖于模板。模板包含所需HTML输出的静态部分以及描述如何插入动态内容的特殊语法 1.1、django默认模板 在settings中配置: TEMPLATES = [{BACKEND: django.template.backends.django.…

基于 Echarts 的 Python 图表库:Pyecahrts交互式的日历图和3D柱状图

文章目录 概述一、日历图和柱状图介绍1. 日历图基本概述2. 日历图使用场景3. 柱状图基本概述4. 柱状图使用场景 二、代码实例1. Pyecharts绘制日历图2. Pyecharts绘制2D柱状图3. Pyecharts绘制3D柱状图 总结 概述 本文将引领读者深入了解数据可视化领域中的两个强大工具&#…

数据解构+算法(第07篇):动态编程!黄袍加身!

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

力扣hot100 对称二叉树 递归

Problem: 101. 对称二叉树 文章目录 思路Code 思路 👨‍🏫 参考 Code 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* …

【10秒开服】雾锁王国服务器全自动部署教程

你是火焰之子,一个濒死种族最后的希望火苗。苏醒吧,克服腐化一切的迷雾所裹挟的恐怖,重新夺回你的王国所失落的瑰丽。置身于广袤世界,战胜难以想象的强大Boss,修造宏伟厅堂,在这款至多16名玩家的合作类生存…

sectigo ip ssl证书有哪些

Sectigo是移交成立时间较久的CA认证机构,几十年来在全球颁发了各种各样的数字证书,例如,单域名SSL证书、多域名SSL证书、通配符SSL证书等域名SSL证书。Sectigo旗下也有一些不常见的数字证书,例如,代码签名证书、IP证书…

HTTP中传输协议的数据格式

HTTP 概述:超文本传输协议(Hyper Text Transfer Protocol) 传输协议:定义了客户端和服务器通信时,发送数据的格式 客户端和服务器端交互:客户端向服务器端发送请求,服务器端向客户端响应请求 HTTP特点:…

【RT-DETR有效改进】利用YOLO-MS的MSBlock模块改进ResNet中的Bottleneck(RT-DETR深度改进)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块),我们将其用于替换我们ResNet中Basic组合出一种新的结构,来替换我们网络中的…

【Bugs】Jmeter报错:NoSuchMethodError: org.apache.jmeter.samplers.

报错情况 Jmeter版本:5.4.3 报错场景:在线程组中添加了jpgc - PerfMon Metrics Collector性能监控组件后出现报错。 Jmeter中无法运行测试,cmd命令行中出现以下报错。 cmd报错详细内容: Uncaught Exception java.lang.NoSuchMe…

Mac 上终端配置

Mac 上终端配置 初始化了一下自己的 mac 笔记本,所以重新记一下终端配置,最终的完成版的需求是这样的: 存在的指令需要显示绿色进行提示: 不存在的指令则是显示红色进行提示: 同时具备对指令进行提示 一个看起来…

spark window源码探索

核心类: 1. WindowExec 物理执行逻辑入口,主要doExecute()和父类WindowExecBase 2. WindowFunctionFrame 窗框执行抽象,其子类对应sql语句的不同窗框 其中又抽象出BoundOrdering类, 用于判断一行是否在界限内(Bound), 分为RowBoundOrdering…

2024美赛MCM 问题 C 网球运动的动量(Momentum in Tennis)

2024 MCM Problem C: Momentum in Tennis In the 2023 Wimbledon Gentlemen’s final, 20-year-old Spanish rising star Carlos Alcaraz defeated 36-year-old Novak Djokovic. The loss was Djokovic’s first at Wimbledon since 2013 and ended a remarkable run for one o…

直播团队职责

一、内容策划 直播团队的内容策划人员是整个直播活动的核心,他们需要负责策划直播的主题、内容、形式以及时间安排等。同时,他们还需要负责邀请嘉宾、安排活动等,确保直播内容丰富、有趣、有价值。 二、主播管理 主播是直播活动的关键人物…

提升CKA考试胜算:一文带你全面了解RBAC权限控制!

RBAC概述 RBAC引入了四个新的顶级资源对象。Role、ClusterRole、RoleBinding、 ClusterRoleBinding。同其他 API 资源对象一样,用户可以使用 kubectl 或者 API 调用等 方式操作这些资源对象。kubernetes集群相关所有的交互都通过apiserver来完成,对于这…

计算机网络第4章(网络层)

4.1、网络层概述 简介 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输 这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可 但是如果要将这些异构型网络互连起来,形成一个更大的互…

《云原生安全攻防》-- 云原生安全概述

从本节课程开始,我们将正式踏上云原生安全的学习之旅。在深入探讨云原生安全的相关概念之前,让我们先对云原生有一个全面的认识。 什么是云原生呢? 云原生(Cloud Native)是一个组合词,我们把它拆分为云和原生两个词来…

存内计算芯片研究进展及应用—以基于NorFlash的卷积神经网络量化及部署研究突出存内计算特性

文章目录 存内计算的背景存算一体技术发展历程 存内计算芯片研究现状SRAM存内计算DRAM存内计算ReRAM/PCM存内计算MRAM存内计算NOR Flash存内计算 基于 NOR Flash 的卷积神经网络量化卷积神经网络基本结构卷积神经网络量化方法研究实验及结果分析心得 参考文献 如果我能看得更远…

C语言基础:头歌练习数组练习

(字符串插入) 任务描述 题目描述:输入两个字符串a和b,将b串中的最大字符插入到a串中最小字符后面。 样例输入: MynameisAmy MynameisJane 样例输出: MynameisAymy 题目分析:a字符串中最小的字符是A…