最后一次课后实验

课后实验验证:

package p;

public class TestInstanceof

{

public static void main(String[] args) 

{

//声明hello时使用Object类,则hello的编译类型是Object,Object是所有类的父类

//但hello变量的实际类型是String

Object hello = "Hello";

//String是Object类的子类,所以返回true。

System.out.println("字符串是否是Object类的实例:" + (hello instanceof Object));

//返回true。

System.out.println("字符串是否是String类的实例:" + (hello instanceof String));

//返回false。

System.out.println("字符串是否是Math类的实例:" + (hello instanceof Math));

//String实现了Comparable接口,所以返回true。

System.out.println("字符串是否是Comparable接口的实例:" + (hello instanceof Comparable));

String a = "Hello";

//String类既不是Math类,也不是Math类的父类,所以下面代码编译无法通过

//System.out.println("字符串是否是Math类的实例:" + (a instanceof Math));

}

}

 

 

可以使用instanceof运算符判断一个对象是否可以转换为指定的类型:

 

package p;

class Mammal{}

class Dog extends Mammal {}

class Cat extends Mammal{}

 

public class TestCast

{

public static void main(String args[])

{

Mammal m;

Dog d=new Dog();

Cat c=new Cat();

m=d;

d=(Dog) m;

d=(Dog)m;

//d=c;

//c=(Cat)m;

 

}

}

 

 

package p;

 

import javax.swing.*;

 

public class AboutException {

   public static void main(String[] a) 

   {

      int i=1, j=0, k;

    //  k=i/j;

 

 

try

{

 

k = i/j;    // Causes division-by-zero exception

//throw new Exception("Hello.Exception!");

}

 

catch ( ArithmeticException e)

{

System.out.println("被0除.  "+ e.getMessage());

}

 

catch (Exception e)

{

if (e instanceof ArithmeticException)

System.out.println("被0除");

else

{  

System.out.println(e.getMessage());

 

}

}

 

 

finally

     {

      JOptionPane.showConfirmDialog(null,"OK");

     }

 

  }

}

 

 

 

 

package p;

 

public class AboutException { 

    public static void main(String[] args) { 

        try { 

            try { 

                throw new ArrayIndexOutOfBoundsException(); 

            } 

            catch(ArrayIndexOutOfBoundsException e) { 

               System.out.println(  "ArrayIndexOutOfBoundsException" +  "/内层try-catch"); 

            }

 

            throw new ArithmeticException(); 

        } 

        catch(ArithmeticException e) { 

            System.out.println("发生ArithmeticException"); 

        } 

        catch(ArrayIndexOutOfBoundsException e) { 

           System.out.println(  "ArrayIndexOutOfBoundsException" + "/外层try-catch"); 

        } 

    } 

}

 

 

 

 

package p;

public class CatchWho2 { 

    public static void main(String[] args) { 

        try {

            try { 

                throw new ArrayIndexOutOfBoundsException(); 

            } 

            catch(ArithmeticException e) { 

                System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch"); 

            }

            throw new ArithmeticException(); 

        } 

        catch(ArithmeticException e) { 

            System.out.println("发生ArithmeticException"); 

        } 

        catch(ArrayIndexOutOfBoundsException e) { 

            System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch"); 

        } 

    } 

}

 

 

package p;

 

public class EmbededFinally {

 

    

public static void main(String args[]) {

        

int result;

        

try {

            

System.out.println("in Level 1");

 

           

  try {

                

System.out.println("in Level 2");

  // result=100/0;  //Level 2

               

  try {

                   

  System.out.println("in Level 3");

                      

  result=100/0;  //Level 3

                

                

catch (Exception e) {

                    

System.out.println("Level 3:" + e.getClass().toString());

                

}

                

                

finally {

                    

System.out.println("In Level 3 finally");

                

}

                

               

// result=100/0;  //Level 2

 

            

}

            

catch (Exception e) {

               

  System.out.println("Level 2:" + e.getClass().toString());

           

  }

  finally {

                

System.out.println("In Level 2 finally");

           

 }

             

// result = 100 / 0;  //level 1

        

        

catch (Exception e) {

            

System.out.println("Level 1:" + e.getClass().toString());

        

}

        

finally {

           

  System.out.println("In Level 1 finally");

        

}

    

}

 

}

 

package p;

 

public class SystemExitAndFinally {

 

    public static void main(String[] args)

    {

        try{

 

            System.out.println("in main");

            throw new Exception("Exception is thrown in main");

            //System.exit(0);

 

        }

        catch(Exception e)

        {

            System.out.println(e.getMessage());

            System.exit(0);

        }

        finally

        {

            System.out.println("in finally");

        }

    }

 

}

 

package p;

// UsingExceptions.java

// Demonstrating the getMessage and printStackTrace

// methods inherited into all exception classes.

public class PrintExceptionStack {

   public static void main( String args[] )

   {

      try {

         method1();

      }

      catch ( Exception e ) {

         System.err.println( e.getMessage() + "\n" );

         e.printStackTrace();

      }

   }

 

   public static void method1() throws Exception

   {

      method2();

   }

 

   public static void method2() throws Exception

   {

      method3();

   }

 

   public static void method3() throws Exception

   {

      throw new Exception( "Exception thrown in method3" );

   }

}

 

package p;

import javax.swing.JOptionPane;

 

 

import java.io.FileInputStream;

import java.io.FileNotFoundException;

 

public class TestThrows

{

public static void main(String[] args)

 

{

try {

FileInputStream fis = new FileInputStream("a.txt");

catch (FileNotFoundException e) {

JOptionPane.showMessageDialog(null, ".....");

 

}

}

}

 

import java.io.*;

public class ThrowMultiExceptionsDemo { 

    public static void main(String[] args) 

     { 

      try { 

            throwsTest(); 

       } 

        catch(IOException e) { 

            System.out.println("捕捉异常"); 

        }

    }

 

    private static void throwsTest()  throws ArithmeticException,IOException { 

        System.out.println("这只是一个测试"); 

        // 程序处理过程假设发生异常

        throw new IOException(); 

        //throw new ArithmeticException(); 

    } 

}

 

package p;

 

import java.io.*;

 

 

public class OverrideThrows

{

public void test()throws IOException

{

FileInputStream fis = new FileInputStream("a.txt");

}

}

class Sub extends OverrideThrows

{

//如果test方法声明抛出了比父类方法更大的异常,比如Exception

    //则代码将无法编译……

public void test() throws FileNotFoundException

{

            //...

}

}

 

package p;

/**

 * 自定义的异常类

 * @author JinXuLiang

 *

 */

class MyException extends Exception

{

    public MyException(String Message) {

        super(Message);

    }

    public MyException(String message, Throwable cause) {

        super(message, cause);

    }

     public MyException( Throwable cause) {

        super(cause);

    }

 

}

 

public class ExceptionLinkInRealWorld {

   public static void main( String args[] )

   {

      try {

         throwExceptionMethod();  //有可能抛出异常的方法调用

      }

      catch ( MyException e )

      {

         System.err.println( e.getMessage() );

         System.err.println(e.getCause().getMessage());

      }

      catch ( Exception e )

      {

         System.err.println( "Exception handled in main" );

      }

      doesNotThrowException(); //不抛出异常的方法调用

   }

 

   public static void throwExceptionMethod() throws MyException

   {

      

      try {

         System.out.println( "Method throwException" );

 

         throw new Exception("系统运行时引发的特定的异常");  // 产生了一个特定的异常

      }

      catch( Exception e )

      {

         System.err.println(

            "Exception handled in method throwException" );

         //转换为一个自定义异常,再抛出

         throw new MyException("在方法执行时出现异常",e);

 

         

      }

      finally {

         System.err.println(

            "Finally executed in throwException" );

      }

 

      // any code here would not be reached

   }

 

   public static void doesNotThrowException()

   {

      try {

         System.out.println( "Method doesNotThrowException" );

      }

      catch( Exception e )

      {

         System.err.println( e.toString() );

      }

      finally {

         System.err.println(

            "Finally executed in doesNotThrowException" );

      }

 

      System.out.println(

         "End of method doesNotThrowException" );

   }

}

 

 

 

posted @ 2015-11-14 16:12  三藏大湿  阅读(193)  评论(0编辑  收藏  举报