java问题,动态修改java类里面的一个方法

由于项目中有很多try catch中都是写e.printstacktrace(); 现在由于项目需要做错误日志记录记录功能,由于try catch很多,不想以一个一个在里面加代码,有没有办法通过增强e.printstacktrace这个方法,在printstacktrace()里面做手脚,在方法的最后执行我的日志记录方法呢

第1个回答  推荐于2017-07-01
//创建文件输出流
PrintStream ps=new PrintStream("./log.txt");
//设置新的输出流 System.setErr(ps);

System类的out、err、in成员变量都是final类型的,不能直接复制,要通过setOut()、setErr(),setIn()方法来改变流。上例是通过setOut()方法改变输入流输入位置,将输出重定向到一个固定的目录,实现程序日志
e.printstacktrace 默认用的就是System的输出追问

这个一设置可以全局就设置好了?

本回答被网友采纳
第2个回答  2018-12-26
public class PersistenceException {
    public PersistenceException(Exception e){
        // 这里对错误信息进行持久化
        System.out.println("持久化代码放这里...");
        // 如果需要在控制台同时打印出日志的话
        e.printStackTrace();
    }
    /**测试主方法*/
    public static void main(String[] args){
        int a = 0;
        int b = 0;
        try {
            int c = a/b;
        }catch (Exception e){
            new PersistenceException(e);
        }
    }
}

第3个回答  2020-11-25
AST 修改抽象语法树
第4个回答  2015-10-06
不管如何,都是需要逐个改,不如一次修改好。。。。。。。。。追问

请问有什么办法可以动态改吗?

相似回答