我正在努力尝试使用try and catch代码块。如何在该块之后的try catch块中初始化对象?我知道在try catch之后,对象值将被销毁,但是仍然有什么方法可以让我在该块之后对其进行初始化?
public static void main(String[] args) throws Error {
Person p1=null;Person p2=null;
Student s1=null;Student s2=null;
Employe a=null;
try{
p1 = new Person("Zeer", "Sohn", 1.7,2, 100); //Name , surname,height,age
p2 = new Person("Zeer", "Mike", 1.63, 39);
s1 = new Student("Johnson", "John", 1.9, 21, 2, 1);
s2 = new Student("Deer", "Son", 1.52, 20, 1, 1);
a = new Employe("Stewie", "Michael", 1.74, 44, 12, 440);
}catch (Error.ErrorHeight e){
System.out.println("Error height:"+e.getMessage());
}catch (Error.ErrorAge e){
System.out.println("Error age: "+e.getMessage());
}catch (Error.ErrorSalary e){
System.out.println("Error salary"+e.getMessage());
} catch (Error e) {
System.out.println("General error"+e.getMessage());
};
Person []p={p1,p2,s1,s2,a};
for (Person i : p)
System.out.println(i);
System.out.println(" ");
System.out.println("Sort:");
c = new Comparator<Person>() {
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
};
Arrays.sort(p, c);
我知道在try catch之后,对象值将被破坏。
是的。当创建的对象的变量超出其创建范围时,垃圾回收器将声明该对象。如果您希望它保持活动状态,则可以在try块之外声明变量,就像您在以下代码中所做的那样:
Person p1=null;Person p2=null;
Student s1=null;Student s2=null;
但是,如果这些对象中的一个或多个出现异常,则初始化将不会完成,并且这些对象将恢复为空。您可以在try块之前为其提供默认值。或者只是在try块之外对其进行初始化。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句