1. 简述Java Error类与Exception类的区别。
Exception:
可以是可被控制或不可控制的,表示一个由程序员导致的错误,程序可以继续对抛出的异常进行捕获和相应的处理。
Error:
总是不可控制的。经常用来用于表示系统错误或低层资源的错误,不需要程序进行捕获和处理
2. 简述异常处理的两种方式,并举例说明区别。
1.声明抛出处理:
(1)RunTimeException或其子类的异常,属于默认声明抛出。可以对其不做任何声名抛出或处理,交由调用该方法的地方处理,编译时不会对可能产生异常地方给出提示;
(2)其他异常类必须显示声明抛出。 例如
public static void main(String args[]) throws IOExceprion;
2.程序捕获处理:
通过使用try - catch - finally语句块,用来对可能产生异常的代码产生的异常进行捕获,并根据其异常类型进行不同的操作。
3. 选取RuntimeException类的五个子类,编写抛出并捕获上述子类异常的程序。(例如算术异常,空指针异常,类转换异常,数组越界异常等)
class TestEmptyStack {
public static void main(String[] args){//空栈异常
Stack st = new Stack();
Object ob = st.pop();
}
}
public static void main(String[] args){ //算数异常
int a,b,c;
a=67; b=0;
c=a/b;
System.out.println(a+"/"+b+"="+c);
}
public class TestArray {//空指针异常
private static int[] x;
public static void main(String[] args) {
System.out.println(x[0]);
}
}
public class TestArgs {//数组越界异常
public static void main( String[] args) {
String foo = args[1];
System.out.println("foo = " + foo);
}
}
public static void main(String[] args) {// 类型强制转换异常
Object x = new String("String");
System.out.println((Integer) x);
}
4. 仿照例7.9,自定义一个异常类,并在某场景下抛出该异常对象。
public class Test{
public static String output=""
public static void f(int i){
try{
if(i==1){throw new Exception();}
}
catch(Exception e){
output+="1";
}
finally {output +="3";}
}
public static void main(String[]args){
f(1);
System.out.println(Test.output);