千锋逆战班第27天

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 {  
        }
 }

发布了23 篇原创文章 · 获赞 0 · 访问量 1943

猜你喜欢

转载自blog.csdn.net/funager/article/details/104782425