gpt4 book ai didi

java - 我想从抛出Java程序的当前异常中提取一个字符串

转载 作者:行者123 更新时间:2023-12-03 08:53:18 26 4
gpt4 key购买 nike

我正在从我的类文件无法访问的第三方jar中调用方法。因此,在某些情况下,它会引发异常日志,而我想动态地从当前日志中提取字符串。

这是抛出异常的java程序方法

public String runLayoutTest(final String xmlFile){
try{
String gettingValue = "novalue";
boolean errorFlag = perform("runLayoutTest", new Reporter.Reportable() {

@Override
public boolean run() throws Exception {
String layoutXml = null;

//current directory
Path currentRelativePath = Paths.get("");
String currentProjectPath = currentRelativePath.toAbsolutePath().toString();
System.out.println("Current relative path is: " + currentProjectPath);

System.out.println("layoutXml "+xmlFile);
String x = client.runLayoutTest(currentProjectPath+"\\Excel\\"+xmlFile);
System.out.println("******* x ********"+x);
setX(x);
return true;
}
});

gettingValue = getX();
return gettingValue;

}catch(Exception e){
System.out.println("**Any one rule in Layout is failed**");

//System.out.println(e.getMessage());
return getX();
}
}

这里的客户端是第三方jar文件的对象,在某些奇怪的情况下,这使我感到异常。

异常日志是
com.experitest.client.InternalException: Exception caught while executing runLayoutTest: {"rule_1":{"Exists":true},"rule_2":{"Exists":true,"EqualHeight":false},"rule_3":{"AlignedLeft":false}}
at com.experitest.client.JavaClientInternals.executeInternally(JavaClientInternals.java:234)
at com.experitest.client.Client.execute(Client.java:237)
at com.experitest.client.Client.runLayoutTest(Client.java:1475)
at com.igate.framework.NativeDriver$79.run(NativeDriver.java:2753)
at com.igate.framework.Reporter.action(Reporter.java:81)........

我想从这个异常中提取
runLayoutTest: {"rule_1":{"Exists":true},"rule_2":{"Exists":true,"EqualHeight":false},"rule_3":{"AlignedLeft":false}}

作为字符串。

因此,有什么方法可以在出现这种情况时动态提取出它。
而且我仍然不知道为什么我的catch方法没有被调用的原因。

最佳答案

在您的情况下,您可以只使用Exception.getMessage(),这将导致

Exception caught while executing runLayoutTest: {"rule_1":{"Exists":true},"rule_2":{"Exists":true,"EqualHeight":false},"rule_3":{"AlignedLeft":false}}



下面可以用来获取json字符串。然后,您可以解析json以从中获取所需数据
String message = e.getMessage();
int colonIndex = message.indexOf(":");
String json = null;
if (colonIndex != -1) {
json = message.substring(colonIndex + 1);
}

请注意,在包装异常的情况下,此解决方案将不起作用

关于java - 我想从抛出Java程序的当前异常中提取一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35431430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com