在千锋“逆战”学习第27天
每日一句:程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。
今天学习了自定义异常和异常方法覆盖。
明天继续努力。
作业
5.创建两个自定义异常类 MyException1 和 MyException2。要求:
1) MyException1 为已检查异常,MyException2 为未检查异常
2) 这两个异常均具有两个构造函数,一个无参,另一个带字符串参数,参数表示产生异常的详细信息。
//检查异常
public class MyException1 extends Exception {
public MyException1() {
}
public MyException1(String message) {
super(message);
}
}
//运行时异常
public class MyException2 extends RuntimeException {
public MyException2() {
}
public MyException2(String message) {
super(message);
}
}
--------------------------------------------------------------------------
6.在上一题基础上补充代码
public class TestMyException {
public static void main(String[] args) {
int n;
// 读入n
Scanner sc = new Scanner(System.in);
System.out.println("输入n的值:");
n = sc.nextInt();
try {
m(n);
} catch (MyException1 ex1) {
// 输出ex1 相信的方法调用信息栈
ex1.getMessage();
ex1.printStackTrace();
} catch (MyException2 ex2) {
// 输出ex2的详细信息
ex2.getMessage();
// 重新抛出ex2
throw ex2;
}
}
public static void m(int n) throws MyException1 {// 声明抛出MyException1
if (n == 1) {
// 抛出MyException1,设定其详细信息为n==1
throw new MyException1("n==1");
} else {
// 抛出MyException2,设定其详细信息为n==2
throw new MyException2("n==2");
}
}
}
运行结果:
运行结果:
输入n的值:
1
question.q11.test06.MyException1: n==1
at question.q11.test06.TestMyException.m(TestMyException.java:29)
at question.q11.test06.TestMyException.main(TestMyException.java:13)
输入n的值:
2
Exception in thread "main" question.q11.test06.MyException2: n==2
at question.q11.test06.TestMyException.m(TestMyException.java:32)
at question.q11.test06.TestMyException.main(TestMyException.java:13)
--------------------------------------------------------------------------
8.有如下代码:
class Super {
public void ma() throws IOException {
}
}
interface IA {
void mb();
}
public class MySub extends Super implements IA {
public void ma()/* 1 */ {
}
public void mb()/* 2 */ {
}
}
A.throws java.io.IOException
B.throws java.io.FileNotFoundException,java.io.EOFException
C.throws java.sql.SQLException
D.不能抛出任何异常
在/*1*/处填入A B D,可以通过
在/*2*/处填入D,可以通过
--------------------------------------------------------------------------
10.有如下代码:
public class TestFinally {
public static void main(String[] args) {
System.out.println(ma());
}
public static int ma() {
int b;
Scanner sc = new Scanner(System.in);
System.out.println("输入b");
b = sc.nextInt();
try {
int n = 100;
return n / b;
} catch (Exception e) {
return 10;
} finally {
return 100;
}
}
}
当读入b为100时,输出结果为:100
当读入b为0时,输出结果为:100