Java 使用Null返回进行异常处理

Java 使用Null返回进行异常处理,java,Java,我有一个Java类,它执行JNDI查找并返回查找ejb对象。如果在查找过程中出现故障,将处理各种异常,当出现故障时,它将返回null 现在,当调用该API且查找失败时,我们将得到nullpointer异常。我们可以在调用类中执行空检查,但我需要失败的确切原因。。如何捕获基类中抛出的异常?不要捕获异常,或者如果您需要捕获异常以执行某些特定工作,请在捕获后重新显示异常,以便调用方可以看到异常并自行处理 比如: 如果要在调用链中向上传输错误信息,最好的方法是使用异常 如果要添加其他信息,则不应在查找失

我有一个Java类,它执行JNDI查找并返回查找ejb对象。如果在查找过程中出现故障,将处理各种异常,当出现故障时,它将返回null


现在,当调用该API且查找失败时,我们将得到nullpointer异常。我们可以在调用类中执行空检查,但我需要失败的确切原因。。如何捕获基类中抛出的异常?

不要捕获异常,或者如果您需要捕获异常以执行某些特定工作,请在捕获后重新显示异常,以便调用方可以看到异常并自行处理

比如:


如果要在调用链中向上传输错误信息,最好的方法是使用异常


如果要添加其他信息,则不应在查找失败时返回
null
,而应让查找异常向上传播,或将其包装在自定义异常中。

如果要在其他地方处理查找异常,为什么要捕获查找异常?但是在捕获这些异常后,会有更多语句可供使用执行。如果我尝试添加throw语句,我将得到剩余代码行的“无法访问的代码错误”!!Class1:-公共homeobj m1(){try{homeobj=JNDI lookup();return homeobj;}catch(异常类型1 e1){}catch(异常类型2 e2){}//还要执行一些语句才能返回null;}Class2:-方法m2(){Class1.m1().somemethod();//这里我们将得到null指针异常}这是代码结构。如果我在这里处理Null,我将释放异常,如果我在Class1中重新抛出异常,重新抛出后的剩余代码将无法访问Class1:-公共HOMEBJ m1(){try{HOMEBJ=JNDI lookup();return homeobj;}catch(异常类型1 e1){}catch(异常类型2 e2){}//要执行return Null的更多语句;}类2:-方法m2(){Class1.m1().somemethod();//这里我们将得到null指针异常}}这是代码结构。如果我在这里处理Null,我将释放异常,如果我在Class1中重新引用异常,则重新引用后的剩余代码将无法访问如果即使查找失败,仍有您想要执行的操作,则在查找之前或在异常处理程序中执行该操作,在重新引发异常之前。@user2902067最后一个
块如何?@Klas:-我可以试试这个选项。。但我无权更改该类:(@Viktor:-最终阻止我为上述场景所做的操作
method1() {
    try {
        // SomeException is thrown here
    } catch (SomeException e) {
        // do some work because of the exception
        throw e // re-throw or throw new MyException(e)
    }
}

method2() {
    try {
        method1();
    } catch (SomeException e) {
        // something went bad! 
        // do some specific work?
    }
}