异常处理,在这种情况下它是如何工作的



我有一个class a,类型为class B的Object返回一个Object,在什么情况下我会得到一个null?如果测试中有一个异常,我使用了一个外部api,并抛出了一个异常。控件不应该转到外部A类吗?我在这一行中得到一个Null指针异常->ob.toString((;无法理解。感谢您提前帮助

Class A{
try{
B b = new B();
UserDefinedObject ob = b.test();
ob.count();
}
catch(Exception ex){
}
}
Class B {
try{
UserDefinedObject test(){
return object;
}
}
catch(Exception ex){
throw ex;
}
return null;
}

尽管您提供的代码不正确且不可编译,但返回null语句存在无法访问的代码。因此,您需要确保返回的对象不是null。如果要使其可执行且更干净,例如:

public class A {
public static void main(String []args){
B b = new B();
try{
Object ob = b.test();
System.out.println("Result: " + ob.toString());
} catch(Exception ex){
System.out.println("Failed in parent call");
}
}


static class B {
Object test(){
try{
return new String("B");
} catch(Exception ex){
System.out.println("Failed in B class");
throw ex;
}
}
}
} 

作为对象,我使用新字符串("B"(只是为了简化代码。在B中只有两个出口点:测试方法中的return语句和异常块,异常块之后的任何代码都是不可访问的。如果新字符串("B"(产生异常,它将被B.test((.main((。希望它能在这里增加一点亮点。