2016-12-14 17 views
0

Я пытаюсь использовать beanshell try catch scripting, но я борюсь с ним. поэтому несколько вопросов:?JMeter Beanshell Обработка ошибок с использованием try/catch

Почему, когда я пытаюсь запустить следующий код я получаю ошибку, и не подвох заявление «Ошибка в BeanShell

String str = "a"; 
try { 
    log.info(str) 
} 

catch (Exception ex) { 
    log.error("Error in beanshell", ex); 
    throw ex; 
} 

Ошибка:

2016/12/14 10:26:33 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: ``String str = "a"; try { log.info(str) } catch (Exception ex) {  log.error("Err . . . '' Encountered "}" at line 4, column 1. 

2016/12/14 10:26:33 WARN - jmeter.protocol.java.sampler.BeanShellSampler: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval In file: inline evaluation of: ``String str = "a"; try { log.info(str) } catch (Exception ex) {  log.error("Err . . . '' Encountered "}" at line 4, column 1. 

Во-вторых , Когда я запускаю этот код:

try { 
    String str = "a"; 
    log.info(str) 
} 

catch (Exception ex) { 
    log.error("Error in beanshell", ex); 
    throw ex; 
} 

Я получаю эта ошибка:

2016/12/14 10:27:25 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: ``try { String str = "a"; log.info(str) } catch (Exception ex) {  log.error("Er . . . '' Encountered "}" at line 4, column 1. 

2016/12/14 10:27:25 WARN - jmeter.protocol.java.sampler.BeanShellSampler: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval In file: inline evaluation of: ``try { String str = "a"; log.info(str) } catch (Exception ex) {  log.error("Er . . . '' Encountered "}" at line 4, column 1. 

То же самое, я не понимаю, почему Catch не пришел в игру. Также - в чем разница между Catch Exception/Throwable/EvalError и т. Д.?

ответ

1

Вы играете с синтаксисом (отсутствует ;), поэтому существует Java-интерпретатор. Обработка исключений не предназначена для захвата синтаксических ошибок.


попробовать следующий пример, который бросает ArithmeticException:

import java.lang.ArithmeticException; 

try { 
    int i = 1/0; 
} catch (ArithmeticException e) { 
    log.info("print" + e); 
} 

Ссылка:

  1. http://www.beanshell.org/manual/syntax.html
+0

Так как я могу найти синтаксические ошибки в моем коде BeanShell, когда я пишу мой сценарий? Я попытался добавить исключение ArithmeticException, которое вы сказали, и удалить «;» из int i = 1/0, но исключение ArithmeticException не повышалось – Testerone

+1

Я не знаю, можем ли мы обрабатывать синтаксические ошибки как Исключения. выше код является примером обработки исключений, где вы выполняете 'деление на 0', что вызывает« ArithmeticException ». FYI, никто не использует обработку исключений для целей синтаксических ошибок. пример работает с допустимым синтаксисом (добавьте ';'), поэтому, исправьте синтаксис и попробуйте, вы увидите, что 'Arithmetic Exception' будет отображаться как просто' info' вместо 'BeanShell Error' –

1

У вас не хватает запятой после log.info(str) так вы код должен быть:

String str = "a"; 
try { 
    log.info(str);//<-- this semicolon is VERY important 
} 

catch (Exception ex) { 
    log.error("Error in beanshell", ex); 
    throw ex; 
} 

Beanshell try block не поможет, если ваш код не действителен (не может быть должным образом оценены из-за синтаксической ошибки или опечатки)

Еще один совет: вы можете получить дополнительный выход протоколирования путем добавления debug() команды начало вашего скрипта Beanshell.

См How to Use BeanShell: JMeter's Favorite Built-in Component статьи для получения дополнительной информации о Beanshell сценариях в Jmeter

+0

Как использовать' debug () '? Я просто добавляю его в начало скрипта? по ссылке, которую вы добавили, я не нашел руководство по ее использованию. – Testerone

+0

Да, если вы добавите эту директиву в начале скрипта, вы увидите много выходных данных в STDOUT (окно консоли, в котором вы запустили JMeter) –

+0

И если я все еще выполняю отладку моего проекта и использую GUI ? Где я должен это видеть? – Testerone