//用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模式已将异常分类,内置错误处理机制。若真的要越界出错还继续,如下:
public static void main(String[] args){
int [] x = new int [10];
for ( int i = 0 ;i < 10 ; i++)
{
try{
x[i] = x[ i - 1] + 1;
}
catch(ArrayIndexOutOfBoundsException e){
continue;
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
System.out.println( x[9] );
}
复制代码
作者: 卢其龙 时间: 2012-1-4 23:40
on Error 这种模式原先是按错误编号,选择程序流向;而try...catch模式已将异常分类,内置错误处理机制