Java 如何抛出异常并执行catch块中剩余的业务逻辑?

Java 如何抛出异常并执行catch块中剩余的业务逻辑?,java,Java,我想在这里干一番。我尝试的是在抛出异常后执行一些业务逻辑。业务逻辑在catch块中定义。我不想把throw语句保留在catch块的末尾。有什么我可以试试的吗?我想的是在该点和抛出异常的内部创建一个线程。我不确定它是否有效。请帮帮我 package demo1.web; import demo.exceptions.SupportInfoException; public class TestInnerException { void testIt() throws Exception{

我想在这里干一番。我尝试的是在抛出异常后执行一些业务逻辑。业务逻辑在catch块中定义。我不想把throw语句保留在catch块的末尾。有什么我可以试试的吗?我想的是在该点和抛出异常的内部创建一个线程。我不确定它是否有效。请帮帮我

package demo1.web;

import demo.exceptions.SupportInfoException;

public class TestInnerException {
void testIt() throws Exception{
    try{
        int i=0;
        int j=1/i;
    }catch(Exception e){
        System.out.println("business logic .. .. . . ");
        throw e;
        // I want to excute these below line ,
         but it is unreachable because you aleready throwing the excetion ..
        //any Hacks for it ?
         System.out.println("Lines after throwing the exception ... .");

    }

    System.out.println("I want this logic to be run . . . . .");

}
public static void main(String[] args) throws SupportInfoException, Exception {
    TestInnerException t = new TestInnerException();
    t.testIt();


}
void testRunTimeEx(){
        int i=0;
        int j=1/i;

}
}
让我告诉你我的场景,我有@ExceptionHandler注释来处理本文中描述的所有异常。一些复杂的场景,无法确切解释原因。这里我想要的是,如果它是由catch块处理的,那么我希望它在@ExceptionHandler中被触发,因为在这里我有一些其他的业务逻辑。问题是除非抛出异常,否则不会触发@ExceptionHandler。我想在它进入捕捉区时触发它。但是如果catch块没有抛出任何异常,则不会触发它


在本文中,业务逻辑指的是一些日志功能

这不是黑客行为,也许没有多大意义

1) 如果您想
抛出
一些异常,
立即抛出

2) 如果您想在
exception
raise上执行一些业务逻辑,请执行该操作,然后抛出
exception

但是,如果您想抛出并执行一些操作,在这里没有任何脏代码是不太可能的。对我来说,这里似乎有一股代码的味道

编辑后,请执行以下操作:


虽然它是日志,但您仍然可以在抛出它之前记录日志,在抛出它之后生成日志是没有意义的

我只是不明白为什么有人会想这么做?。如果您想要执行这些行,那么不要抛出异常。您不应该在异常处理程序/catch/finally块中有任何业务登录。关于资源清理,请思考您的设计<当发现当前代码块的基本假设为false时,将引发异常。看一看。在抛出异常后,您应该无法继续。@MohammadGhazanfar完全正确。看起来像是设计的味道。