一.异常的作用:
作用一:异常是用来查询bug的关键参考信息。
作用二:异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况。
二.举例:
例1:
一个JavaBean类:
package com.itheima.a01MyExpection;public class Student { private String name; private int age;public Student() {
}
public Student(String name, int age) { this.name = name; this.age = age; }*/** * * *获取 * * @return *name * / * public String** getName() { return name; }*/** * * *设置 * * @param *name * / * public void setName(String** name) { this.name = name; }*/** * * *获取 * * @return *age * **/ * public int getAge() { return age; }*/** * * *设置 * * @param *age * **/ * public void setAge(int age) { this.age = age; }public String toString() { return "Student{name = " + name + ", age = " + age + "}"; } }
出错原因:Student是引用数据类型,初始值为null。
其中只创建了数组对象,没创建数组元素对象。
故为空值null,无法调用方法。
正确的代码:
例2:
一个JavaBean类:
package com.itheima.a01MyExpection;public class Student2 {
private String name;
private int age;public Student2() { }public Student2(String str) { String[] arr=str.split("-"); this.name=arr[0]; this.age=Integer.parseInt(arr[1]); }*/** * * *获取 * * @return *name * / * public String** getName() { return name; }*/** * * *设置 * * @param *name * / * public void setName(String** name) { this.name = name; }*/** * * *获取 * * @return *age * **/ * public int getAge() { return age; }*/** * * *设置 * * @param *age * **/ * public void setAge(int age) { this.age = age; }public String toString() { return "Student2{name = " + name + ", age = " + age + "}"; } }
错误原因在Student2类里:
正确代码如下:即用逗号分割即可
运行结果:
三.针对作用二:
测试类中:
Student类里:
结果:
这里有弊端,因为setAge这个方法并没有把结果告诉调用者,而是直接把结果打印在控制台。
原理图:
因此,可用异常解决:
Student类里:
测试类中: