自定义异常,方法覆盖
5.(自定义异常)创建两个自定义异常类 MyException1 和 MyException2。
要求:
1) MyException1 为已检查异常,MyException2 为运行时异常。
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);
}
}
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.(方法覆盖)有如下代码
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 {
}
}