练习题1
如果用户输入的不是一个整数,就提示他反复输入,直到输入的是一个整数为止
import java.util.Scanner;
/*如果用户输入的不是一个整数,就反复输入,直到输入的是一个整数为止*/
public class TryCatchExercise04 {
public static void main(String[] args) {
while (true){
try {
Scanner scanner = new Scanner(System.in);
int a = Integer.parseInt(scanner.next());
System.out.println("输出的内容是:"+ a);
break;
} catch (NumberFormatException e) {
System.out.println("输入的数不是一个整数");
}
}
}
}
练习题 2
在主方法里先调用了方法A。然后在A的try代码块里输出了“进入方法A”。因为finally语句块会优先执行,所以会输出“用A方法的finally”。接下来会输出抛出的异常,即“制造异常”。
A方法执行完后,主方法会去调用B方法。第一步输出B方法里的“进入方法B”。因为finally语句块会优先执行,所以会输出“调用B方法中的finally”。然后在执行return,跳出结束执行过程。
课后题1
package HomeWork;
import java.util.Scanner;
public class homework01 {
public static void main(String[] args) {
try {
//先判断输入的是不是两个数
if (args.length != 2){
throw new ArrayIndexOutOfBoundsException("参数个数不对");
}
//把接收到的参数转换成整数
int num1 = Integer.parseInt(args[0]);
int num2 = Integer.parseInt(args[1]);
double res = num1/num2;
System.out.println("结果是"+res);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.getMessage());
} catch (NumberFormatException e) {
System.out.println("参数格式不正确,需要输出整数");
} catch (ArithmeticException e){
System.out.println("出现了除0的日常");
}
}
void cal(int n1, int n2){
double res = n1/n2;
System.out.println("结果为"+ res);
}
}
课后题2
package HomeWork;
public class homework02 {
public static void main(String[] args) {
//array。length = 0,发生 ArrayIndexOutOfBoundsException
if (args[4].equals("john")){ //可能会发生nullpointerException
System.out.println("AA");
}else{
System.out.println("BB");
}
Object o = args[2]; //字符串类型转Object,向上转型没有错误
Integer i = (Integer) o;//会发生classcastexception
}
}
课后题3
从main方法开始执行。然后执行try里的fun()方法,执行里的的RuntimeException方法后,然后执行finally,输出B。因为执行了异常,所以不会输出A。接下来执行catch里的exception,然后输出C。最后输出D。
答案 B C D
课后题 4
首先执行showExce()方法,扔出一个异常。因为存在异常,所以之后的A不会被输出。
在catch里面抓住了异常,然后输出B。接下来无论怎样都会执行finally里的方法,输出C。最后输出D。