Groovy - обработка исключений - как получить код ошибки Oracle - PullRequest
0 голосов
/ 12 декабря 2018

Я запускаю скрипт Groovy в плане тестирования jMeter, например:

import groovy.sql.*;
import java.sql.*;
import oracle.jdbc.driver.OracleTypes;

def url = vars['url']
def user = vars['user']
def password = vars['password']
def driver = vars['driver']
def sql = Sql.newInstance(url, user, password, driver)

try{
    def result = sql.call("{? = call MY_FUNCTION(?,?)}", [Sql.NUMERIC, vars.get('MY_VAR'), 'MY_PARAM']);
} catch (Exception ex) {

    log.error "getMsg: " + ex.getMessage(); 
}

finally{
    sql.close();
}

, который, в исключительных случаях, возвращает сообщение об ошибке всего Oracle:

ORA-00001: уникальныйограничение (имя_ограничения) нарушено ... бла-бла

Как я могу получить только конкретный код ошибки Oracle, напр.'ORA-00001' или '00001' или '1' (желательно без регулярного выражения или подстроки)?

Я пытался использовать OracleDatabaseException класс, но Groovy, похоже, не справляется с этим.

1 Ответ

0 голосов
/ 12 декабря 2018
  1. Если вам не нужны регулярные выражения, вы можете использовать SQLException.getErrorCode () , например:

    } catch (SQLException ex) {
    
        log.error "getMsg: " + ex.getErrorCode()
    }
    
  2. Однакоесли ошибка не будет SQLException или производной, вышеуказанный блок catch работать не будет.Поэтому, чтобы быть в безопасности, вы можете использовать Groovy Find Operator =~, например:

    } catch (Exception ex) {
        println("getMsg: " + (ex.getMessage() =~ "(ORA-\\d+)")[0][0])
    }
    

Check Apache Groovy - почемуи как вы должны это использовать статья, чтобы узнать больше о скриптах Groovy в тестах JMeter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...