编写类ExceptionTest2 定义两个方法:go()和main()
时间: 2024-04-30 19:21:11 浏览: 63
以下是类`ExceptionTest2`的代码实现:
```java
public class ExceptionTest2 {
public void go() {
try {
int[] arr = {1, 2, 3};
System.out.println(arr[3]); // 引发ArrayIndexOutOfBoundsException异常
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组越界错误:" + e.getMessage());
}
}
public static void main(String[] args) {
ExceptionTest2 test = new ExceptionTest2();
test.go();
}
}
```
这里定义了一个`ExceptionTest2`类,其中包含了两个方法:`go()`和`main()`。
`go()`方法中,我们故意访问了数组中不存在的索引位置以引发`ArrayIndexOutOfBoundsException`异常,然后通过`catch`块捕获该异常并输出错误信息。
在`main()`方法中,我们创建了一个`ExceptionTest2`对象,并调用其`go()`方法来演示异常处理的过程。
相关问题
1.(本题12分)编写程序完成下列功能: (1)定义一个Phone类,要求如下: 属性:品牌(brand)、颜色(color)、价格(price) 方法:构造方法,set和get方法,其中setPrice(int price)若price<200,则抛出LessException,若 price>10000,则抛出GreatException 。 (2)编写自定义LessException和GreatException异常类。 (3)按要求编写Phone类,且在setPrice方法体中抛出LessException或GreatException异常类。 (4)编写类ExceptionTest2:在main方法中,调用setPrice方法,使用try/catch捕获setPrice方法中抛 出的异常
以下是Python代码实现:
```python
class LessException(Exception):
def __init__(self, message):
super().__init__(message)
class GreatException(Exception):
def __init__(self, message):
super().__init__(message)
class Phone:
def __init__(self, brand, color, price):
self.brand = brand
self.color = color
self.price = price
def setPrice(self, price):
if price < 200:
raise LessException("价格不能低于200元")
elif price > 10000:
raise GreatException("价格不能高于10000元")
else:
self.price = price
def getPrice(self):
return self.price
def getBrand(self):
return self.brand
def getColor(self):
return self.color
try:
p = Phone("苹果", "白色", 1500)
p.setPrice(300)
except LessException as e:
print(e)
except GreatException as e:
print(e)
```
程序运行结果为:
```
价格不能低于200元
```
说明程序能够正确地抛出LessException异常。如果将p.setPrice(300)改为p.setPrice(12000),则程序将抛出GreatException异常。
2.定义一个Student类,要求如下: 属性:id、name; 方法:构造方法, set 和get 方法,其中setid(String id)若id长度大于10,则抛出LengthException,若id 中含有字母字符,则抛出LetterException。 编写自定义LengthException和LetterException异常类。 编写Student 类。在setid方法体中抛出LengthException或LetterException异常类↵ 编写类ExceptionTest3:
以下是定义好的Student类和自定义的LengthException和LetterException异常类,以及ExceptionTest3类的代码实现:
```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 (int i = 0; i < id.length(); i++) {
if (Character.isLetter(id.charAt(i))) {
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", "Tom");
try {
student.setId("123456789012");
} catch (LengthException e) {
System.out.println(e.getMessage());
} catch (LetterException e) {
System.out.println(e.getMessage());
}
System.out.println("ID:" + student.getId());
System.out.println("姓名:" + student.getName());
}
}
```
在这段代码中,我们定义了一个Student类,其中包含id和name两个属性,以及构造方法和set/get方法。在set方法中,我们加入了异常处理机制,当id长度大于10或id中含有字母字符时,会抛出LengthException或LetterException异常类。同时,我们在ExceptionTest3类中对于set方法进行了测试,并输出结果。
阅读全文