【问题标题】:What the the equivalent of vb's On Error Resume Next in Java? [closed]Java中vb的On Error Resume Next相当于什么? [关闭]
【发布时间】:2014-09-17 04:14:23
【问题描述】:

我正在处理一些我不太熟悉的 ASP 代码。我需要将下面的代码(原始代码)转换/更改为 Java(我不是专家)

我了解一些语法,但我有点卡在“On Error Resume Next”开头的代码行上,我不知道 Java 使用哪个函数。

这部分让我失望 (不确定 Java 中的“下一步”需要是什么)

任何帮助将不胜感激

<%  <!-- each string had DIM in front ex. DIM fEmptyRecordset So i believe I changed what was needed --->   
<%      
Boolean fEmptyRecordset = ""; ' as Boolean
Boolean fFirstPass = ""; ' as Boolean
Boolean fNeedRecordset = ""; ' as Boolean
Command cmdTemp = ""; ' as Command
Double dblUnits = ""; ' as Double
Double dblRateFrom = ""; ' as Double
Double dblRateTo = ""; ' as Double
Double newRate = ""; ' as Double
Double newUnits = ""; ' as Double
String NewCurrName = ""; ' as String
String NewCurrName2 = ""; ' as String

        ' Convert currency
        fEmptyRecordset = true;
        fFirstPass = true;
        fNeedRecordset = true;
<!--- here is where I'm stuck, I don't quite understand the "On Error Resume Next" function that ASP uses. I'm just looking for gudance in which function this is related to in Java --->       

        On Error Resume Next 
        if (fNeedRecordset) {
            Set con_currency_sdo = Server.CreateObject("ADODB.Connection")  
            con_currency_sdo.ConnectionTimeout = con_currency_sdo_ConnectionTimeout
            con_currency_sdo.CommandTimeout = con_currency_sdo_CommandTimeout
            con_currency_sdo.Open con_currency_sdo_ConnectionString, con_currency_sdo_RuntimeUserName, con_currency_sdo_RuntimePassword
            Set cmdTemp = Server.CreateObject("ADODB.Command")
            Set GetRate = Server.CreateObject("ADODB.Recordset")
            ' Find out what the common base currency is and get the corresponding rates for both
            ' the From and To currencies.  Order desc to get USD, GBP, EUR. (USD is preferred)
            cmdTemp.CommandText = "SELECT FROMCURR.BASE_CURR_CODE, " & _
                "FROMCURR.CURR_RATE_BASE_FC FROMRATE, TOCURR.CURR_RATE_BASE_FC TORATE, " & _
                "CURRNAMEFROM.BLMBG_CURR_NAME FROMCURRNAME, CURRNAMETO.BLMBG_CURR_NAME TOCURRNAME " & _
                "FROM AON_CURR_DAILY_EXCH_RATE_SDO FROMCURR, AON_CURR_DAILY_EXCH_RATE_SDO TOCURR, " & _
                "AON_CURRENCY_SDO CURRNAMEFROM, AON_CURRENCY_SDO CURRNAMETO " & _
                "WHERE FROMCURR.CURR_CODE='" & Request.Form("selBaseCurr") & _
                "' AND TOCURR.CURR_CODE='" & Request.Form("selTargetCurr") & _
                "' AND FROMCURR.BASE_CURR_CODE=TOCURR.BASE_CURR_CODE" & _
                " AND FROMCURR.CURR_CODE=CURRNAMEFROM.CURR_CODE" & _
                " AND TOCURR.CURR_CODE=CURRNAMETO.CURR_CODE" & _
                " AND FROMCURR.CURR_DATE='" & dateString & _
                "' AND TOCURR.CURR_DATE='" & dateString & _
                "' ORDER BY FROMCURR.BASE_CURR_CODE DESC;"
            cmdTemp.CommandType = 1
            Set cmdTemp.ActiveConnection = con_currency_sdo
            GetRate.Open cmdTemp, , 0, 1
            ' Place all error codes in comments
            if (Err.number <> 0) {
                fEmptyRecordSet = true;
                out.println("<!-- ADO Errors Begin -->" & "\r\n")
                for (Object objError : con_currency_sdo.Errors) {
                    out.println("<!-- ADO Error.Number = " & objError.Number & "-->" & "\r\n")
                    out.println("<!-- ADO Error.Description = " & objError.Description & "-->" & "\r\n")
                    out.println("<!-- ADO Error.Source = " & objError.Source & "-->" & "\r\n")
                    out.println("<!-- ADO Error.SQLState = " & objError.SQLState & "-->" & "\r\n")
                    out.println("<!-- ADO Error.NativeError = " & objError.NativeError & "-->" & "\r\n")
                Next  <!--- Not sure what "Next" needs to be in Java --->
                out.println("<!-- ADO Errors End -->" & "\r\n")
                out.println("<!-- VBScript Errors Begin -->" & "\r\n")
                out.println("<!-- Err.number = " & Err.number & "-->" & "\r\n")
                out.println("<!-- Err.description = " & Err.description & "-->" & "\r\n")
                out.println("<!-- Err.source = " & Err.source & "-->" & "\r\n")
                out.println("<!-- VBScript Errors End -->" & "\r\n")
                if (checkDate = true) {
%>

【问题讨论】:

  • 这个问题似乎离题了,因为 StackOverflow 不是代码转换服务 - 没有提出具体问题。
  • 转换代码相当于重写代码,同时保持等效语义。这需要两个系统的最基本知识。 (而且 JavaScript 不是 Java。)
  • @pep 然后他/她可以查一下。如果这是唯一的问题,那么应该以更清晰和直接的方式提出问题,包括更集中的标题并且没有一堆不相关的代码。 “这需要两个系统的最基本知识。”

标签: java asp.net jsp


【解决方案1】:

这个问题的答案真的归结为:

  • (1) 你想完全复制这个.. 还是...
  • (2) 你想做正确的事吗 (tm)

如果答案是 #1,那么恭喜。就像 try{} catch(e) 之间的所有代码一样简单

On Error Resume Next

if (Err.number <> 0) {

Err.number 和 Err.Description 是错误代码/描述。您可以只使用异常组件。

如果答案是 #2,那么您只需要尝试 {} catch(e) 可以抛出异常的代码,并根据失败原因正确处理每个异常。每种方法都有可以抛出的不同异常。看起来唯一的方法是实际的 ADO Open() 调用,所以这是我在 try{} catch() 中包装的唯一方法。

无论哪种方式,您都不会记录所有这些 ADO 属性。我会记录任何异常/异常文本/堆栈跟踪作为异常对象的一部分吐出。

【讨论】:

  • 谢谢你,Lynn,我回来说我相信我需要使用 try catch。再次感谢您
  • @CG-webdev 没问题;祝其余的转化顺利!
【解决方案2】:

这是处理异常的vb脚本方式,告诉程序在发生错误时继续执行到下一行。

在这里回答What does the "On Error Resume Next" statement do?

【讨论】:

    猜你喜欢
    • 2011-01-13
    • 2017-10-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    相关资源
    最近更新 更多