Исходный код выглядит следующим образом:
public void init() throws IOException {
Configuration conf = super.getConf();
// Send command to executor which will just start up,
// verify configuration/permissions and exit
try {
...
} catch (PrivilegedOperationException e) {
int exitCode = e.getExitCode();
LOG.warn("Exit code from container executor initialization is : "
+ exitCode, e);
throw new IOException("Linux container executor not configured properly"
+ " (error=" + exitCode + ")", e);
}
try {
...
} catch (ResourceHandlerException e) {
LOG.error("Failed to bootstrap configured resource subsystems! ", e);
throw new IOException(
"Failed to bootstrap configured resource subsystems!");
}
try {
...
} catch (ContainerExecutionException e) {
throw new IOException("Failed to initialize linux container runtime(s)!");
}
Когда я использовал метод body.getTraps()
, чтобы получить все исключения в блоке catch, он просто получил IOException
, другие исключения, такие как ContainerExecutionException
, игнорируются.
Похоже, что когда код генерирует исключение в блоке catch, исключение, которое фактически захватывается блоком catch, будет игнорироваться.
Итак, я думаю, что, возможно, ошибка Soot в getTraps()
.