• 最后一次课后实验


    课后实验验证:

    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() + " " );

             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" );

       }

    }

     

  • 相关阅读:
    Boost.Asio c++ 网络编程翻译(10)
    建站手册:网站品质
    建站手册-template
    CDN:分类
    CDN:BootCDN 项目列表-摘录-20180405
    CDN:BootCDN
    CDN:目录
    CDN-template
    JavaScript-Tool:md5.js
    Regexp-Utils:基本
  • 原文地址:https://www.cnblogs.com/sanzangtdashi/p/4964552.html
Copyright © 2020-2023  润新知