例题:
自己设计一个异常类NegativeException,编写People类,拥有属性name , age,salary;在年龄、工资设置为负值时,抛出该异常,并进行简单的处理。
思路:
自定义异常类可以通过继承Exception类来实现,一般格式为:
class 自定义异常类名 extends Exception {
异常类体
}
代码:
people类:
package 异常处理;
public class People {
private int age;
private double salary;
private String name;
public void setAge(int age) throws NegtiveException {
if(age < 0){ //如果年龄小于0则抛出异常
throw new NegtiveException();
}
else {
this.age = age;
}
}
public void setSalary(double salary) throws NegtiveException {
if(salary < 0) //如果薪水小于0则抛出异常
{
throw new NegtiveException();
}
else {
this.salary = salary;
}
}
public void setName(String name) {
this.name = name;
}
public void showInfo() {
System.out.println("name:" + name +" " + "age:" + age + " "+"salary:" + salary);
}
}
自定义异常类:
package 异常处理;
public class NegtiveException extends Exception{ //发现异常的处理
public void showAge(int age) {
if(age < 0)
System.out.println("年龄不能是负数,默认值为0");
}
public void showSalary(double salary) {
if(salary < 0)
System.out.println("工资不能是负数,默认值为0");
}
}
主类:
package 异常处理;
import java.util.*;
public class Demo {
public static void main(String[] args) throws NegtiveException {
People people = new People();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = scanner.next(); //输入姓名
System.out.println("请输入年龄:");
int age = scanner.nextInt(); //输入年龄
System.out.println("请输入工资:");
double salary = scanner.nextDouble(); //输入工资
try { //执行可能出现异常的程序代码
people.setName(name);
people.setAge(age);
people.setSalary(salary);
}
catch(NegtiveException e) { //try中出现异常则执行此处理异常
e.showAge(age);
e.showSalary(salary);
}
finally { //无论是否发生异常,定执行
people.showInfo();
}
}
}