1.throw和throws有什么区别?
2.发生异常后,如何跟踪堆栈异常信息?
3.一个方法声明抛出异常,调用者如果不进行任何处理,程序能否运行?
4.在一个方法中,能否既throw抛出异常,又把它捕获?如果可以,方法调用者是否需要处理该异常?如果不可以,为什么不可以?
5.以下代码能否运行?如果错了,哪行错了?为什么错?
//import java.io.*; public static void main(String[] args){ try(FileWriter fw = new FileWriter("D:\\a.txt",true);){ for(int i=0;i<10;i++){ fw.write("abc"+i+"\r\n"); } }catch(IOException e){ System.out.println(e); }finally{ fw.close(); } }
6.以下checkPassWord方法代码是否错误?如果错了,哪行错了?为什么错?如果正确,运行结果是什么?
public static void main(String[] args){ String pwd = "12345678"; System.out.println("密码"+pwd+"是否符合要求?"+checkPassWord(pwd)); } public static boolean checkPassWord(String pwd){ // 检测pwd字符串,至少包含8个字符,如果不符合则抛出一个java.lang.NumberFormatException if(pwd.length()<8){ throw new NumberFormatException("密码错误"); return false; } else { return true; } }
7.以下代码执行结果是什么?
public static void main(String[] args){
int[] a = new int[10];
try{
System.out.println(a[10]);
System.out.println(a[1]);
}catch (Exception e){
System.out.println(1);
}
try{
System.out.println(a[10]);
}catch (Exception e){
System.out.println(2);
}
System.out.println(a[1]);
}
8.如果在main中声明抛出异常,一旦发生异常,main会将异常抛给谁?程序是否会被终止?这说明了什么?
9.在使用try-catch时,能否捕获编译期异常?能否捕获运行期异常?能否捕获Error?能否捕获Throwable?能否捕获Object?
10.方法覆盖后,能否抛出抛出(throw)更大的异常?能否声明抛出(throws)更大的异常?
11.调用方法时,不捕获异常,能否抛出(throw)更小的异常?能否声明抛出(throws)更小的异常?
12.方法中抛出(throw)异常时,本身也不捕获,是否需要声明抛出(throws)异常?