2.定义一个Student类,要求如下: 属性:id、name; 方法:构造方法,set和get方法,其中setid(String id)若id长度大于10,则抛出LengthException,若id中含有字母字符,则抛出LetterException 。 编写自定义LengthException和LetterException异常类。 编写Student类。在setid方法体中抛出LengthException或LetterException异常类 编写类ExceptionTest3:
时间: 2024-03-06 17:48:05 浏览: 60
设计学生类Student,属性:编号(整型);姓名(字符串),成绩(整型)。
5星 · 资源好评率100%
好的,我明白了你的问题。下面是对应的代码实现:
```java
// 自定义LengthException异常类
class LengthException extends Exception {
public LengthException(String message) {
super(message);
}
}
// 自定义LetterException异常类
class LetterException extends Exception {
public LetterException(String message) {
super(message);
}
}
// 定义Student类
class Student {
private String id;
private String name;
public Student(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) throws LengthException, LetterException {
if (id.length() > 10) {
throw new LengthException("ID长度不能大于10!");
}
for (char c : id.toCharArray()) {
if (Character.isLetter(c)) {
throw new LetterException("ID不能包含字母字符!");
}
}
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// 定义ExceptionTest3类
public class ExceptionTest3 {
public static void main(String[] args) {
Student student = new Student("1234567890", "张三");
try {
student.setId("12345678901");
} catch (LengthException e) {
e.printStackTrace();
} catch (LetterException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,我们定义了两个自定义异常类LengthException和LetterException,分别表示ID长度过长和ID包含字母字符两种情况。在Student类的setId方法中,我们通过判断ID的长度和字符是否都符合规定,来决定是否抛出上述两种异常。在ExceptionTest3类中,我们对setId方法进行了测试,并对抛出的异常进行了捕获和处理。
阅读全文