异常的捕获和处理

1、什么是异常?如何捕获异常?
异常:描述出出错信息得而对象
普货异常用try{}catch(){}

2、异常的类结构是怎样的?错误和异常各自有什么特点?
异常的api结构throw有两个子类:error(错误),exception(异常)
try cath
error是错误的父类,错误可以捕获,但不能处理,一般反生崩溃机的情况
excption是所有异常的父类,异常可以捕获也可以处理。

3、异常执行的顺序是怎样的?
先执行try块中的内容,顺序执行,如果try块中有异常发生,那么转去catch块执行,同时终止try块的
其他代码。无论是否有异常,都会执行finally语句块重的代码。如果try或catch块中有system.exit(0);则
finally不会执行。

4、throw和throws 的区别是什么?
throw是语句表示显示抛出异常。throw new exception
throws反法修饰符,表示该方法可能会抛出某种异常,那么如果调用该方法,就必须处理该方法抛出的异常

5、异常有几种?如何区分?
编译期异常;要求开发者必须处理,如果不处理则编译错误;
运行期异常:开发者可出里可不处理,如果不处理也可通过编译。
所有的运行期异常,都是Runtime Exception。

6、finally一般在什么时候使用?是不是任何时候都会执行finally块?
finally一般用于流的关闭,数据库的关闭等资源回收。
无论是否有异常,都会执行finally语句块重的代码。如果try或catch块中有system.exit(0);则
finally不会执行。

7、String s = "abc"
String s = new String("abc")有什么区别?画出内存图。
String s = "abc";s变量指向的数据段中的字符串对象。
String s = new String("abc")s变量指向的是堆中的字符串对象,在堆中创建字符串对象,会已数据段
中的字符串作为模板,复制到堆中的字符串对象中。

8、String有什么特点?
当对字符串做添加,删除,替换的不会改变String对象的内容,而是产生新的字符串对象。

9、"[3200-3500]"这样一个正则表达式。"3300"匹配吗?为什么?
不匹配,只能表示一个字符。0-5数字才行

10、说出以下代码执行结果 空指针异常 finally代码 异常外代码
try{
JFrame j = null;
j.setSize(400,300);
}
catch(NullPointerException e){
System.out.println("空指针异常");
}
catch(Exception e){
System.out.println("发生异常");
}
finally{
System.out.println("finally代码");
}

System.out.println("异常外代码");

11、说出以下代码执行结果 23 134
public class FinallyTest {
private static String str = "";

public static void foo(int x){
try{
if(x == 0){
int y = 9/0;
}
str += "1";

}catch(Exception e){
str += "2";
return;
}
finally{
str += "3";
}
str += "4";
}
public static void main(String[] args) {
foo(0);
foo(1);
System.out.println(str);
}
}

12、说出以下代码执行的结果 出现异常 finally

public class Test {

public static void main(String[] args) {
int[] strs = {1,2,3,5,7};
int sum = 0;
try{
for(int i = 0 ;i<=5;i++){
sum += strs[i];
}
System.out.println(sum);
}catch(Exception e){
System.out.println("出现异常");
}
finally{
System.out.println("finally");
}
}
}


13、说出以下代码执行结果
String a = "abc";
String b = "abc";
String c = new String("abc");
String d = new String("abc");

System.out.println(a == b); true
System.out.println(c == b);false
System.out.println(c == d);false

System.out.println(a.equals(b));true
System.out.println(a.equals(d));true
System.out.println(b.equals(c));true
14、说出以下代码执行结果abcd abcd***
public static void main(String[] args) {
String s = "abcd";
StringBuffer sb = new StringBuffer("abcd");
test(s,sb);
System.out.println(s+" "+sb);
}

public static void test(String s,StringBuffer sb){
s = s + "&&&";
sb.append("***");
}
}

posted @ 2017-06-03 16:04  大鱼海棠--会飞的鱼  阅读(305)  评论(0编辑  收藏  举报