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

展开全部

//没看到有人回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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值