package com.github.sevntu.checkstyle.checks.coding;
public class InputAvoidHidingCauseExceptionCheck
{
public Exception fakeException = new Exception();
public void Simple()
{
RuntimeException r = new RuntimeException();
try {
}
catch (ClassCastException e) {
//your code
}
catch (IndexOutOfBoundsException e) {
//your code
throw new RuntimeException(); // !
}
catch (IllegalStateException e) {
//your code
throw new RuntimeException("Runtime Ecxeption!"); // !
}
catch (java.lang.ArithmeticException e) {
//your code
throw new RuntimeException("Runtime Ecxeption!", e);
}
catch (RuntimeException e) {
//your code
throw e;
}
catch (java.lang.Exception e) {
//your code
throw r; // !
}
}
public void Stronger()
{
boolean x = false;
RuntimeException r = new RuntimeException();
try {
}
catch (IndexOutOfBoundsException e) {
//your code
if (x&x | !x) {
while (!!!!!!!!x) {
for (int ee = 0 ; ee < 10; ee++)
throw new RuntimeException(); // !
}
}
}
catch (IllegalStateException e) {
while (!!!!!!!!x) {
x = !!!!!!!!false & !!!!!!!!true;
double kkk = Math.pow(5, 25555555);
int ee = (int) kkk;
throw new RuntimeException("Runtime Ecxeption!"); // !
}
}
catch (java.lang.ArithmeticException e) {
int []err = new int [50];
if (err[51]==0) { err[999]++; }
throw new RuntimeException("Runtime Ecxeption!", e);
}
catch (RuntimeException e) {
for(int a = 0, b = 3; a < 6*a+b; a+= a-2) {
throw e;
}
}
catch (java.lang.Exception e) {
int []err = new int [50];
int []err2 = new int [50];
for (int m : err2) {
throw r; // !
}
}
}
public void TestNestedANDNotSimple()
{
RuntimeException myOwnException = new RuntimeException();
try {
}
catch (ClassCastException e) { // nested: good --> bad
//your code
try {
} catch (RuntimeException n) {
throw new RuntimeException(n); //
}
throw new RuntimeException(); // !!!!!
}
catch (IndexOutOfBoundsException e) { // nested: bad --> good
//your code
try {
} catch (RuntimeException n) {
throw new RuntimeException(myOwnException); // !!!!
}
throw new RuntimeException(e); //
}
catch (NullPointerException e) { // nested: IDENT.getMessage() situation
// with good and bad reaction and DOT situation
// your code
try {
try {
} catch (RuntimeException x) {
//your code
throw new RuntimeException(x.getMessage(), e); // !!!!
}
} catch (java.lang.ArithmeticException x) {
//your code
throw new RuntimeException(e.getMessage(), x); //
}
throw new RuntimeException(e.getMessage()); // !!!!!
}
catch (java.lang.ArithmeticException e) { // tests situation #5
ArithmeticException ex = null;
ArithmeticException ex1 = null;
if (e instanceof ArithmeticException) {
ex = (ArithmeticException) e; // bad
// ex1 = (ArithmeticException) e; // good
throw ex; //
} else {
ex = new ArithmeticException(e.getMessage());
}
throw ex1; // !!!!!
}
catch (IllegalArgumentException e) {
// your code
RuntimeException modelEx = new RuntimeException(e);
RuntimeException modelEx2 = null;// = new RuntimeException(e);
if (modelEx != null) {
throw modelEx; //
}
throw new RuntimeException("Exception on set property to value! " +modelEx2.getMessage(), modelEx2); // !!!!!
}
catch (RuntimeException e) {
RuntimeException sqlEx = new RuntimeException("failed to open DB connection to: " + e);
try {
sqlEx.initCause(e);
} catch (Exception e2) {
// ignore
}
throw sqlEx; //
}
catch (Exception e) {
RuntimeException ex = null;
RuntimeException ex4 = null;
if (e instanceof RuntimeException) {
ex = (RuntimeException) e; // null;
} else {
ex4 = new RuntimeException(e);
ex4 = null; // No warning. You can change this if you really need.
}
throw ex4;
}
catch (Throwable e) { // nested try/catch +
RuntimeException ex = null;
try {
} catch (RuntimeException e2) {
RuntimeException ex4 = null;
if (ex4 instanceof RuntimeException) {
ex4 = (RuntimeException) e2;
ex = (RuntimeException) e;
}
throw ex4; //
}
if (e instanceof RuntimeException) {
}
throw ex; //
}
}
public void trickyExamples() throws Exception
{
try {
} catch (IndexOutOfBoundsException fakeException) {
throw new RuntimeException(this.fakeException);
}
try {
} catch (IndexOutOfBoundsException ee) {
throw new RuntimeException(exceptionWrapper(ee));
}
try {
} catch (ClassCastException e) {
throw exceptionWrapper(e);
}
try {
} catch (ClassCastException e) {
throw this.exceptionWrapper(e);
}
try {
} catch (ClassCastException e) {
throw InputAvoidHidingCauseExceptionCheck.this.exceptionWrapper(null);
}
try {
} catch (ClassCastException e) {
throw (ClassCastException) e.getCause();
}
try {
} catch (ClassCastException e) {
throw new java.util.ArrayList<java.lang.Exception>().get(0);
}
try {
} catch (final ClassCastException e) {
// e is not populated in throw block, should be reported an problem
// but it is probably to complicated to be detected by CheckStyle
throw new Exception() {
public boolean equals(Object o) {
try {
} catch (Exception e2) {
return true;
}
Exception myException = e;
return false;
}
};
}
}
private static Exception exceptionWrapper(Throwable e)
{
return new IllegalArgumentException(e);
}
}