1   package com.puppycrawl.tools.checkstyle.checks.coding.requirethis;
2   
3   public class InputRequireThisCatchVariables extends Thread {
4       private Throwable ex;
5   
6       public InputRequireThisCatchVariables(Throwable ex) {
7           this.ex = ex;
8       }
9   
10      @Override
11      public void run() {
12          if (this.ex != null) {
13              try {
14                  exceptional(this.ex);
15              }
16              catch (RuntimeException ex) {
17                  if (ex == this.ex) {
18                      debug("Expected exception thrown", ex);
19                  }
20                  else {
21                      ex.printStackTrace();
22                  }
23              }
24              catch (Error err) {
25                  if (err == this.ex) {
26                      debug("Expected exception thrown", err);
27                  }
28                  else {
29                      ex.printStackTrace();
30                  }
31              }
32              catch (Throwable ex) {
33                  ex.printStackTrace();
34              }
35          }
36      }
37  
38      private static void exceptional(Throwable ex) {}
39      private static void debug(String message, Throwable err) {}
40  }