java 注解练习2

该博客展示了如何使用Java反射API动态调用Calculator类中带有@Check注解的方法,并捕获并记录异常。通过实例演示了如何使用Method.invoke()和异常处理来实现方法的测试和错误日志输出。
摘要由CSDN通过智能技术生成
package Reflects;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Method;

public class Demo {
    public static void main(String[] args) throws IOException {
        Calculator cl= new Calculator();
        Class<? extends Calculator> aClass = cl.getClass();
        System.out.println(aClass);
        Method[] methods = aClass.getMethods();
        int number = 0;
        BufferedWriter bf = new BufferedWriter(new FileWriter("./debug.txt"));
        for (Method m : methods){
            //需要测试的方法
            if (m.isAnnotationPresent(Check.class)){
                try {
                    m.invoke(cl);
                }catch (Exception e){
                    number++;
                    bf.write(m.getName()+"异常了");
                    bf.newLine();
                    bf.write("异常名称:"+e.getCause().getClass().getSimpleName());
                    bf.newLine();
                    bf.write("异常原因:"+e.getCause().getMessage());
                    bf.newLine();
                    bf.write("==============================");
                    bf.newLine();
                }
            }
        }
        bf.write("本此共"+number+"个错误");
        bf.close();

    }
}
package Reflects;

public class Calculator {
    @Check
    public void add(){
        System.out.println("2+1="+(2+1));
    }
    @Check
    public void sub(){
        System.out.println("2-1="+(2-1));
    }
    @Check
    public void take(){
        System.out.println("2*0="+(2*0));
    }
    @Check
    public void div(){
        System.out.println("2/0="+(2/0));
    }
    @Check
    public void test(){
        System.out.println("2/0="+(2/0));
    }
    public void adapt(){
        System.out.println("=====");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值