黑马程序员技术交流社区

标题: 如何用java实现vb语言中的On Error Resume Next 语句的功能? [打印本页]

作者: 卢其龙    时间: 2012-1-3 20:01
标题: 如何用java实现vb语言中的On Error Resume Next 语句的功能?
本帖最后由 卢其龙 于 2012-1-4 23:40 编辑

//用java实现vb语言中的On Error Resume Next 语句的功能
//例如
//On Error Resume Next 说明当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行。访问对象时要使用这种形式而不使用 On Error GoTo。
//java与c# 是安全与强类化的语言.这里是不是体现了java语言的安全性呢?
//我个人认为java这种设计模式挺好,但向vb中On Error 这种语句在java应该也能实现吧?因为有时候她们的确有用
//-----------------------------------------------------------
'vb代码:我这里只是打个比方所以代码设计不太合理.
Private Sub Form_Load()
  On Error Resume Next  '无论发生什么异常继续向前
  
  Dim x(9) As Integer   '定义10个元素
  Dim i As Integer        '定义for循环变量
  For i = 0 To 9       
   
   x(i) = x(i - 1) + 1         ' i =0 时 x(0 - 1) 上标越界,但继续执行
  
  Next i
   
  MsgBox x(9)
'输出9
End Sub
'--------------------------------------------------------------------
//java代码
class Index
{
        public static void main ( String [] agrs ) throws Exception
        {
                int [] x = new int [10];
                 try{
                               
                                for ( int i = 0 ;i < 10 ; i++)
                                {
                                        x = x[ i - 1] + 1;
                                }
           }
           catch(Exception e)  //当异常发生被抛过来,推出循环.
           {
                   //在样让她还返回去继续执行呢?
                                System.out.println( x[9] );
                                //输出 0
           }
        }
}
作者: 沈样    时间: 2012-1-3 22:50
本帖最后由 沈样 于 2012-1-3 22:50 编辑

如果出错了想再继续运行的,我觉得如果想实现这个功能的思路应该从异常处理那块着手,在try catch finally 的异常处理那里编写程序看看,有什么看法可以讨论一下呵呵
作者: 卢其龙    时间: 2012-1-4 12:16
我的想法是
------------------
class Demo
{
        public static void main ( String [] args )
        {
                try
                {
                        int i = 1;
                        Sting s= "a123";
                        i = s ;      //回出错语句
                        System.out.println( s );
                }
                catch()
                {
                        //记录传来语句地址
                        //返回传来语句地址 + 1(下条语句)       
                }
                fallcy
                {
                       
                }
               
        }
}

这里可能设计到底层点东西,现在搞不定,不知道java api有这方面的功能吗
作者: 黄秋    时间: 2012-1-4 15:33
on Error 这种模式原先是按错误编号,选择程序流向;而try...catch模式已将异常分类,内置错误处理机制。若真的要越界出错还继续,如下:
  1. public static void main(String[] args){
  2.                 int [] x = new int [10];
  3.                 for ( int i = 0 ;i < 10 ; i++)
  4.                 {
  5.                         try{
  6.                                 x[i] = x[ i - 1] + 1;
  7.                         }
  8.                         catch(ArrayIndexOutOfBoundsException e){
  9.                                 continue;
  10.                         }
  11.                         catch(Exception e){
  12.                                 System.out.println(e.getMessage());
  13.                         }
  14.                 }
  15.            System.out.println( x[9] );
  16.           
  17.         }
复制代码

作者: 卢其龙    时间: 2012-1-4 23:40

on Error 这种模式原先是按错误编号,选择程序流向;而try...catch模式已将异常分类,内置错误处理机制

这几话是精华需要好好理解理解
作者: 黄秋    时间: 2012-1-5 00:56
如果你学过汇编语言,或旧的basic语言,就会知道“按错误编号,选择程序流向”模式的优缺点,这种模式也有错误等级的,类似windows的出错,有错误编号,据编号也能分类(严重程度、种类)。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2