class Person { public Person() { System.out.println("创建一个Person"); } } class Employee extends Person{ private age public Employee(int age) { this age=age setAge(age); this age=age } public void setAge(int age) IllegalArgumentException { if (age >= 0) this.age = age; else throw new IllegalArgumentException( ); } } public class Main{ public static void main(String[] args){ try { Employee emp1 = new Employee(10); Employee emp2 = new Employee(-1); } { System.out.println(ex.getMessage()); } finally { } } }
时间: 2024-02-10 08:10:46 浏览: 95
javaSystem.out.println()输出byte[]、char[]异常的问题详析
你的代码已经基本正确了,但是有一些小问题需要修正:
1. 当创建 Employee 对象时,需要传入年龄参数,但你的代码中漏掉了 `int` 关键字,应该写成 `public Employee(int age) {`。
2. 在 `setAge` 方法中,当年龄小于 0 时,应该抛出 `AgeException`,而不是 `IllegalArgumentException`。因此需要定义一个 `AgeException` 类。
下面是修改后的代码示例:
```
class Person {
public Person() {
System.out.println("创建一个Person");
}
}
class Employee extends Person {
private int age;
public Employee(int age) {
super();
this.age = age;
setAge(age);
}
public void setAge(int age) throws AgeException {
if (age >= 0)
this.age = age;
else
throw new AgeException();
}
}
class AgeException extends Exception {
public AgeException() {
super("年龄不能为负数!");
}
}
public class Main {
public static void main(String[] args) {
try {
Employee emp1 = new Employee(10);
Employee emp2 = new Employee(-1);
} catch (AgeException ex) {
System.out.println(ex.getMessage());
} finally {
// 这里可以添加一些清理代码
}
}
}
```
在上面的代码中,当创建 `Employee` 对象时,如果年龄小于 0,就会抛出 `AgeException` 异常,并输出异常消息 `"年龄不能为负数!"`。在 `main` 方法中,我们通过 `try-catch` 块捕获了这个异常,并输出了异常消息。
阅读全文