更好地控制捕获异常时打印的内容



有没有办法在异常发生时从异常中获取特定信息?

例如,当我打电话给printStackTrace时,我会得到很多信息......但有时我得到的信息太多,其中大部分不是我需要看到的东西,因为无论如何它总是相同的信息。

至少当涉及到Selenium Webdriver时,它首先告诉我问题是什么。

com.thoughtworks.selenium.SeleniumException: Element blah not found
  at org.openqa.selenium.internal.seleniumemulation.ElementFinder.findElement(ElementFinder.java:92)
  at org.openqa.selenium.internal.seleniumemulation.Click.handleSeleneseCommand(Click.java:35)
  at org.openqa.selenium.internal.seleniumemulation.Click.handleSeleneseCommand(Click.java:1)
  at org.openqa.selenium.internal.seleniumemulation.SeleneseCommand.apply(SeleneseCommand.java:35)
  at org.openqa.selenium.internal.seleniumemulation.Timer.run(Timer.java:40)
  at org.openqa.selenium.WebDriverCommandProcessor.execute(WebDriverCommandProcessor.java:140)  
  ...
Caused by: org.openqa.selenium.WebDriverException: ...
...
...
...

然后它继续告诉我有关我的环境、功能(带有另一个消息列表)以及更多"由"信息引起的信息。

这是一条很长的消息,我不希望它弄乱我的日志文件。有没有办法省略所有"由"相关消息引起的?

我试过getMessage但它只说

Element blah not found

这是没有用的。我想至少看看它来自哪条线。

当然,只获取前几个堆栈帧并解析它们。使用 getStackTrace 获取StackTraceElement[]并循环访问它们,直到在中获得一个框架(或您想要过滤的其他方式)以获得正确的行。硒内部线可能不是你需要的。

在这个元素上,你可以调用getMethodNamegetLineNumber等。

最新更新