java 捕获异常并存入数据库_java异常处理,报异常的话怎么处理对象值,并持久化到数据库中...

news/2025/3/15 23:07:38/

展开全部

//没看到有人回e68a843231313335323631343130323136353331333365646233答你,我还没学到框架,不知道那个是不是可以很便捷操作你说的这样过程

//我写个基础点的,就是一个序列化与反序列化的过程,你这个是要侦测到参数异常的时候

//才开始进行序列化操作的,其实我觉得原理应该都是一样的吧!

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

import java.util.ArrayList;

public class ObjectTest {

File path = new File("K:/IO测试/Baidu");//路径!

static File file = null;

String name = null;

public static void main(String[] args) {

ObjectTest obj=new ObjectTest();

obj.createUser();//创建对象,传入非法参数进行捕捉!

User u=obj.des();//反序列化过程!

if(u!=null)

System.out.println("\r\n查看对象属性:\t"+u);

}

//1.序列化过程!

public String createUser() {

ObjectOutputStream oos = null;

ArrayList userMapper = new ArrayList<>();

User user = new User();

try {

user.setName("小明");

name = user.getName() + ".object";

user.setStatus(0);// 将状态设置为成功

userMapper.add(user);

} catch (Exception e) {

// 报异常,将status设置为1存到库中

System.out.println("侦测到参数异常,即将存入数据库!");

user.setStatus(1);

File tem = new File(path, name);

if (!tem.exists()) {// 如果异常文件不存在,就创建!

file = new File(path, name);

try {

oos = new ObjectOutputStream(new FileOutputStream(file));

oos.writeObject(user);

System.out.println("正在写入数据!");

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e1) {

e1.printStackTrace();

}

}else {

System.out.println("数据库中已经有数据,写入失败,直接读取!\r\n");

}

} finally {

if (oos != null) {

try {

oos.close();

System.out.println("存入完成!\r\n");

} catch (IOException e) {

e.printStackTrace();

}

}

}

return name;

}

//2.反序列化过程:也就是读取序列化文件的过程!

private User des() {

ObjectInputStream ois=null;

File filed=new File(path,name);

if(!filed.exists()) {

System.out.println("数据不存在,失败!");

return null;

}

try {

System.out.println("数据存在,开始反序列化!");

ois=new ObjectInputStream(new FileInputStream(new File(path,name)));

return (User)ois.readObject();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (ClassNotFoundException e){

e.printStackTrace();

} finally {

if(ois!=null) {

try {

ois.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return null;

}

}

//角色类

class User implements Serializable {

private static final long serialVersionUID = 1L;

private String name;

private int status;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getStatus() {

return status;

}

public void setStatus(int status) {

if (status <= 0) {

throw new RuntimeException("");

}

this.status = status;

}

public String toString() {

return "姓名:"+name + ";\t年龄:" + status;

}

}

a02e552e5f6d82550c878d6b13e0700a.png


http://www.ppmy.cn/news/602905.html

相关文章

金属元素螯合剂:(S)-DOTAGA-(COOt-Bu)4,1023889-20-4,可应用于制备纳米材料

文章关键词&#xff1a;金属元素螯合剂&#xff0c;大环配体&#xff0c;DOTA标记(COOt-Bu)4 ●中文名&#xff1a;(S)-DOTAGA-四叔丁酯 ●英文名&#xff1a;(S)-DOTAGA-(COOt-Bu)4 ●外观以及性质&#xff1a; 西安凯新生物科技有限公司供应的​(S)-DOTAGA-(COOt-Bu)4中DOT…

java 手编线程池_死磕 java线程系列之自己动手写一个线程池

欢迎关注我的公众号“彤哥读源码”&#xff0c;查看更多源码系列文章, 与彤哥一起畅游源码的海洋。(手机横屏看源码更方便)问题(1)自己动手写一个线程池需要考虑哪些因素&#xff1f;(2)自己动手写的线程池如何测试&#xff1f;简介线程池是Java并发编程中经常使用到的技术&…

java带参数的方法笔记_具有Java参数的方法的类声明

类声明可以包含在Java中具有参数的方法。演示此过程的程序如下&#xff1a;示例class Message {public void messagePrint(String msg) {System.out.println("The message is: " msg);}}public class Demo {public static void main(String args[]) {Message m new…

java 0-100整数多少个是7的倍数_输出1-100之间7的倍数的个数。

java小白&#xff0c;在学习java基础视频&#xff0c;看到毕老师给的一个练习。便自己编写了一下。在编写的过程中。输出个数是没有问题的。代码如下&#xff1a;//目的&#xff1a;计算1-100之间7的倍数的个数。/**要求&#xff1a;1&#xff0c;先求出1-100之间7的倍数。2&am…

java 原子量_Java原子量 - Rickxue的个人空间 - OSCHINA - 中文开源技术交流社区

所谓的原子量即操作变量的操作是“原子的”&#xff0c;该操作不可再分&#xff0c;因此是线程安全的。为何要使用原子变量呢&#xff0c;原因是多个线程对单个变量操作也会引起一些问题。在Java5之前&#xff0c;可以通过volatile、synchronized关键字来解决并发访问的安全问题…

java 数据结构 无向图_数据结构-无向图

1.图的定义图(Graph)是由顶点(vertex)的有穷非空集合和顶点之间边(edge)的集合组成&#xff0c;通常表示为&#xff1a;G(V,E)&#xff0c;其中&#xff0c;G表示一个图&#xff0c;V是图G中顶点的集合&#xff0c;E是图G中边的集合 a.若顶点之间 Vi 和 Vj 之间没有方向,则为无…

java命令行读入密码_java-在命令行上隐藏输入

是的&#xff0c;可以做。 这称为命令行输入屏蔽。 您可以轻松实现此目的。您可以使用单独的线程擦除输入的回显字符&#xff0c;并用星号替换。 使用下面显示的EraserThread类完成此操作import java.io.*;class EraserThread implements Runnable {private boolean stop;/***p…

mysql utf8mb4_general_ci_MySQL编码utf8与utf8mb4 utf8mb4_unicode_ci与utf8mb4_general_ci字符集小结...

本篇文章小编给大家分享一下MySQL编码utf8与utf8mb4 utf8mb4_unicode_ci与utf8mb4_general_ci字符集小结&#xff0c;小编觉得挺不错的&#xff0c;现在分享给大家供大家参考&#xff0c;有需要的小伙伴们可以来看看。utf8mb4 已成为 MySQL 8.0 的默认字符集&#xff0c;在MySQ…