一、异常作业:
1. 简述什么是异常、异常的继承体系?
在java程序运行过程中,出现的不正常的情况,出现的错误,称为异常.
- 简述异常的处理方式?
可以进行跳转,捕获以程序结束,也可以抛出.
- throw和throws关键字的使用位置和格式?
throw是对异常对象的抛出,一般放在方法中.throws是对异常的声明,一般放在方法名后边.
throw new 异常名称() throws 异常类名
- 多个catch处理的注意事项?
单个try块能有许多catch块,当try块有“可能引起不同类型异常”的语句时,多个catch块是必须的。
异常捕获的先后顺序应该“从小到大”。
- 简述finally关键字的特点和作用?
无论发生了什么,finally中的代码一定会被执行,除非虚拟机关了.
代码中有必须要执行的代码(比如释放资源)的情况。
- Throwable类的常见方法及方法描述?
- toString() 输出该异常的类名。
- getMessage() 输出异常的信息,需要通过构造方法传入异常信息(例如病态信息)。
- printStackTrace() 打印栈信息。
- 自定义异常的步骤?
定义一个异常类继承Exception或RuntimeException
重写父类的方法
8 首先预测下列程序的运行结果,然后编译、执行以验证你的预测:
import java.io.*;
public class C11{
public static void main(String args[]) {
for(int i = 0; i < 4;i++) {
//这里是个for循环,一次输出一个异常.Exception可以接收所有异常
int k;
try {
switch( i ) {
case 0:
int zero = 0;
k = 911 / zero;
break;
case 1:
int b[ ] = null;
k = b[0];
break;
case 2:
int c[ ] = new int[2];
k = c[9];
break;
case 3:
char ch = "abc".charAt(99);
break;
}
}catch(Exception e) {
System.out.println("\nTestcase #" + i + "\n");
System.out.println(e);
}finally {
System.out.println("Exception Test Finished!");
}
}
}
}
运行结果:
Testcase #0
java.lang.ArithmeticException: / by zero
Testcase #1
java.lang.NullPointerException
Testcase #2
java.lang.ArrayIndexOutOfBoundsException: 9
Testcase #3
java.lang.StringIndexOutOfBoundsException: String index out of range: 99
- 将上述程序中catch(Exception e)更改为catch(ArithmeticException e),预测程序运行的结果并验证之。
运行结果:
Testcase #0
java.lang.ArithmeticException: / by zero
Exception in thread "main" java.lang.NullPointerException
at com.xiongluoluo.homework.Test08.main(Test08.java:16)
- 将上述程序中catch(Exception e)更改为catch(NullPointerException e),预测程序运行的结果并验证之。
运行结果:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.xiongluoluo.homework.Test08.main(Test08.java:12)
(i匹配到0的时候,一直报出算术异常,而且无法解决,故而下面的代码根本运行不了)
(4)在(3)的程序中添加一些语句,使得程序能够输出Exception Test Finished!的信息。(提示:使用finally语句)
在catch块后面加finally {
System.out.println("Exception Test Finished!");
}
9.
import java.util.Random;
import java.util.Scanner;
/*猜数游戏,随机生成一个1 到100之间的整数,从键盘输入数字进行猜数,一共可以猜5次,
如果猜小了在控制台输出猜小了,如果猜大了,在控制台输出猜大了,如果猜
对了在控制台输入 恭喜你猜对了,并结束游戏。 注意当输入的不是数字或数字不合服规则时,不算次数*/
public class Test09 {
public static void main(String[] args) {
guessNumberGame();
}
public static void guessNumberGame() {
Scanner sc = new Scanner(System.in);
Random r = new Random();
int number = r.nextInt(100) + 1;
int count = 0;
System.out.println("******欢迎来到猜数字小游戏******");
while(true) {
if(count >= 5) {
System.out.println("您的游戏次数用完了哦");
break;
}
System.out.println("请输入您猜的数字:");
String gn= sc.nextLine();
String regex = "[1-9][0-9]";
if(gn.matches("\\D*")) {
System.out.println("您录入的数字不合法,请重新录入.");
}else if(gn.matches(regex) || gn.matches("100")) {
int guessNumber = Integer.parseInt(gn);
if(guessNumber > number) {
System.out.println("猜大了");
count++;
}else if(guessNumber < number) {
System.out.println("猜小了");
count++;
}else {
System.out.println("恭喜您,猜对了!");
break;
}
}else{
System.out.println("您录入的数字不合法,请重新录入.");
}
}
}
}
二、正则作业:
课上代码