5.(自定义异常)创建两个自定义异常类 MyException1 和 MyException2。要求:
I. MyException1 为已检查异常,MyException2 为运行时异常。
AI.这两个异常均具有两个构造函数,一个无参,另一个带字符串参数,参数表示产生异常的信息。
class MyException1 extends Exception {
public MyException1() {
super();
}
public MyException1(String message) {
super(message);
}
}
class MyException2 extends RuntimeException {
public MyException2() {
super();
}
public MyException2(String message) {
super(message);
}
}
6.(自定义异常)在上一题的基础上,把下面代码补充完整。
public class TestMyException{
public static void main(String args[]){ int n;
//读入
n try{
m(n);
}catch(MyException1 ex1){
//输出 ex1 详细的方法调用栈信息
}catch(MyException2 ex2){
//输出 ex2 的详细信息//并把 ex2 重新抛出
}
}
public static void m(int n)_________ { //声明抛出
MyException1 if (n == 1) {
//抛出 MyException1
//并设定其详细信息为“n == 1”
}else {
//抛出 MyException2
//并设定其详细信息为“n == 2”
}
}
}
package com.peng.demo;
public class TestMyException {
public static void main(String args[]) {
int n;
// 读入 n
try {
m(n);
} catch (MyException1 ex1) {
// 输出 ex1 详细的方法调用栈信息
} catch (MyException2 ex2) {
// 输出 ex2 的详细信息
// 并把 ex2 重新抛出
}
}
public static void m(int n) throws MyException1 {
// 声明抛出 MyException1
if (n == 1) {
// 抛出 MyException1
throw new MyException1("n==1");
// 并设定其详细信息为“n == 1”
} else {
// 抛出 MyException2
throw new MyException1("n==2");
// 并设定其详细信息为“n == 2”
}
}
}
class MyException1 extends Exception {
public MyException1() {
super();
}
public MyException1(String message) {
super(message);
}
}
class MyException2 extends RuntimeException {
public MyException2() {
super();
}
public MyException2(String message) {
super(message);
}
}
8.(方法覆盖)有如下代码
8.import java.io.IOException; 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______{}
}
问: 在//1 处,填入以下______代码可以编译通过,在//2 处,填入______代码可以编译通过。
A.throws java.io.IOException
B.throws java.io.FileNotFoundException, java.io.EOFException
C.throws java.sql.SQLException
D.不能抛出任何异常。
在1处:AB
在2处:D
10.(try-catch-finally)有如下代码
public class TestFinally{
public static void main(String args[]){
System.out.println ( ma() );
}
public static int ma(){
int b;
//读入 b
try{
int n = 100;
return n/b;
}catch(Exception e){
return 10;
}finally{
return 100;
}
}
}
在 ma 中,当读入的 b 为 100 时,输出结果为_____,当读入的 b 为 0 时,输出结果为______。
100
100
12.(方法覆盖)
import java.io.*;
class MySuper{
public void m() throws IOException{}
}
class MySub extends MySuper{
public void m() throws EOFException{}
}
class MySub2 extends MySub {
public void m() throws FileNotFoundException{}
}
以上代码是否能编译通过?如果不能,应该如何修改?
不能:重写方法异常小于等于父类
import java.io.*;
class MySuper {
public void m() throws IOException {
}
}
class MySub extends MySuper {
public void m() throws EOFException {
}
}
class MySub2 extends MySuper {
public void m() throws FileNotFoundException {
}
}