求程序结果 public class T{ public static void main(String[] args){ int[] a=new int[5]; try{ a[10]=200; }catch(ArithmeticException e){ System.out.println("ArithemticException"); }catch (ArrayIndexOut0fBoundsException e){ System.out.printIn("OutOfBoundsException"); }catch(Exception e){ System.out.printIn("Exception"); return; }finally{ System.out.printIn("finally"); } } }
时间: 2024-03-25 10:36:11 浏览: 56
程序会抛出 ArrayIndexOutOfBoundsException 异常,因为数组 a 的长度为 5,而访问 a[10] 超出了数组长度的范围。因此,程序会执行第二个 catch 语句块,输出 "OutOfBoundsException"。由于没有捕获到 ArithmeticException 异常,所以不会执行第一个 catch 语句块。由于有一个捕获到了异常,所以不会执行第三个 catch 语句块,而是直接执行 finally 语句块,输出 "finally"。因此,程序的输出结果为:
```
OutOfBoundsException
finally
```
相关问题
(异常的产生)把下面代码补充完整 public class TestThrow{ public static void main(String args[]){ throwException(10); } public static void throwException(int n){ if (n == 0){ //抛出一个 NullPointerException }else{ //抛出一个 ClassCastException //并设定详细信息为“类型转换出错” } } } (异常的产生)把下面代码补充完整 public class TestThrow{ public static void main(String args[]){ throwException(10); } public static void throwException(int n){ if (n == 0){ //抛出一个 NullPointerException }else{ //抛出一个 ClassCastException //并设定详细信息为“类型转换出错” } } }
public class TestThrow{
public static void main(String args[]){
try{
throwException(10);
} catch(NullPointerException e){
System.out.println("发生了NullPointerException异常");
} catch(ClassCastException e){
System.out.println("发生了ClassCastException异常:类型转换出错");
}
}
public static void throwException(int n){
if (n == 0){
throw new NullPointerException("空指针异常");
}else{
throw new ClassCastException("类型转换出错");
}
}
}
class Person { public Person() { public static void (String ags[]) } } class Employee extents person Person{ private int age; public Employee(int age) { setAge(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 { } } }
这段代码存在一些语法错误,我来指出并解释一下:
1. 在 Person 类的构造函数中,似乎缺少了方法体。应该将 public Person() { } 改为 public Person() { // 这里写构造函数的方法体 } 。
2. 在 Employee 类定义上,extends 与 Person 之间应该要有一个空格。应该将 class Employee extends Person { // 这里写类的定义 }。
3. 在 Employee 类的构造函数中,有一个语法错误。public Employee(int age) { setAge(age); } 后面的 { 应该改为 (,正确的语法应该是 public Employee(int age) { setAge(age); } 。
4. 在 setAge 方法中,可能会抛出 IllegalArgumentException 异常。应该在方法声明中加上 throws IllegalArgumentException,如:public void setAge(int age) throws IllegalArgumentException { // 这里写方法体 }。
5. 在 main 方法中,try 后面的 { 前面缺少一个空格。应该将 try { 改为 try { 。
6. 在 main 方法中,catch 语句中的 ex 变量未定义。应该将 catch (ex) { 改为 catch (Exception ex) { 。
7. 在 main 方法中,finally 语句后面的 { 应该改为 },以结束 main 方法的定义。
改正后的代码如下:
```
class Person {
public Person() {
// 构造函数的方法体
}
}
class Employee extends Person {
private int age;
public Employee(int age) {
setAge(age);
}
public void setAge(int age) throws 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);
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
// main 方法的方法体
}
}
}
```
阅读全文