testing_setkeyOnExit <- function(DT) {
  key.bak <- copy(key(DT))
  on.exit(setkeyIfNot(DT, key.bak, verbose=TRUE, organize=FALSE))

  print(DT)
  set.seed(1)
  DT[, new_col := factor(sample(c("X", "O"), .N, TRUE), levels=c("X", "O"))]
  setkeyIfNot(DT, new_col)

  cat (" ------   WITH NEW KEY:  ----------\n")
  print(DT)

  stop ("This is an error")
}

if (FALSE) 
{
  DT.test <- data.table(a=rep(LETTERS[1:3], times=c(5, 2, 3)), val=1:10, key="a")
  try(testing_setkeyOnExit(DT.test))
  cat (" ------   AFTER ----------\n")
  print(DT.test)
  print(key(DT.test)  )
}
