NET程序员如何转行为J2EE之java基础上(8)

    作者:课课家教育更新于: 2016-01-29 18:37:23

    大神带你学编程,欢迎选课

      然而,两种语言的编译器对您的代码如何处理异常具有不同的预期。在 Visual Basic .NET 中,您可以选择捕获异常,或让它们沿调用堆栈向上传播到类的方法的调用者(和/或构造函数)。java 语言允许同样的处理,但是对于未捕获的应用程序异常(也就是 java.lang.Exception 的子类),您必须显式地将它们作为方法声明的一部分来列出。因此 Java 编译器预期您或者自己捕获所有应用程序异常,或者告诉编译器关于未捕获的异常的信息。例如,假设 Foo 类的构造函数可能抛出一个应用程序异常,那么清单 6 中的 Visual Basic .NET 或 Java 代码对各自的编译器来说都不会有问题。

    NET程序员如何转行为J2EE之java基础上(8)_java语言_java编程_课课家

      清单 6. 处理应用程序异常

      Visual Basic .NET           Java

      ...                     ...

      Sub SomeMethod()              public void someMethod() {

      Try                    try {

      Dim Foo X As New Foo()              Foo x = new Foo();

      }

      Catch e As applicationException      catch (Exception e)

      {

      ...                     ...

      End Try                  }

      End Sub                   }

      然而,如果改变代码以使其不捕获异常,那么您就必须改变 Java 方法声明(如清单 7 所示)以避免编译器错误。

      清单 7. 未捕获的应用程序异常

      Visual Basic .NET           Java

      ...                    ...

      Sub SomeMethod()              public void someMethod() throws Exception {

      Dim Foo X As New Foo();           Foo x = new Foo();

      End Sub                  }

      两种语言在这方面存在的另一个区别在于,在 Visual Basic .NET 中,每个捕获块的参数是可选的。如果省略它,那么所有异常都会被捕获。Java 语言不允许这样,而是允许一个等价功能( java.lang.Throwable ),它捕获所有异常类的父类,如清单 8 所示。

      清单 8. 捕获所有异常

      Visual Basic .NET           Java

      ...                     ...

      Sub SomeMethod()              public void someMethod() {

      Try                    try {

      Dim Foo X As New Foo()              Foo x = new Foo();

      }

      Catch                   catch (Throwable e)

      {

      ...                     ...

      End Try                  }

      数组声明

      Java 语言提供两种声明数组的方法;Visual Basic .NET 仅提供了一种方法。Java 数组工作起来很像 Visual Basic .NET 中的动态数组:必须通过一个显式的步骤来给它分配内存。清单 9 中的代码说明了这个区别。与在 Visual Basic .NET 中一样,Java 数组的下标从 0 开始。

      清单 9. 声明数组

      Visual Basic .NET         Java

      ...                  ...

      ' This is how an array is       // In Java the following

      'declared in Visual Basic .NET     // are both allowed

      Dim MyArray() As Integer        private int[] myArray;

      // or

      private int myArray[];

      'Allocate some storage for the array  // Allocate some storage

      // for the array

      ReDim MyArray(30)           myArray = new int[30];

      委托

      Java 语言没有直接等价于 Visual Basic .NET 委托的结构。可以通过声明并实现一个具有单个方法定义的接口来模拟委托功能。

课课家教育

未登录