You don't need to look at the main method, it is for testing purposes. The code of the actual method does not pass the final stage of verification, stating that each message should start on a new line. Well, this is what is happening. I just want to know if there is something not right with my code, or if the verification is not rightly written.
package com.codegym.task.task25.task2512;
/*
Charting our own course
*/
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class Solution implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) {
t.interrupt();
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
//System.out.println(exceptionAsString);
String[] array = exceptionAsString.split(" ");
List<String> list = Arrays.asList(array);
ArrayList<String> classString = new ArrayList<>();
ArrayList<String> messageString = new ArrayList<>();
for (int i = 0; i< list.size(); i++)
{
if (list.get(i).contains("java."))
{
classString.add(list.get(i));
messageString.add(list.get(i+1));
}
}
for (int i = classString.size()-1; i >= 0; i--)
{
System.out.println(classString.get(i) + " " + messageString.get(i).split("[^a-zA-Z0-9]\n")[0]);
}
}
public static void main(String[] args) {
try {
throw new Exception("ABC", new RuntimeException("DEF", new IllegalAccessException("GHI")));
} catch (Exception e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
//System.out.println(exceptionAsString);
String[] array = exceptionAsString.split(" ");
List<String> list = Arrays.asList(array);
ArrayList<String> classString = new ArrayList<>();
ArrayList<String> messageString = new ArrayList<>();
for (int i = 0; i< list.size(); i++)
{
if (list.get(i).contains("java."))
{
classString.add(list.get(i));
messageString.add(list.get(i+1));
}
}
for (int i = classString.size()-1; i >= 0; i--)
{
System.out.println(classString.get(i) + " " + messageString.get(i).split("[^a-zA-Z0-9]\n")[0]);
}
List<String> res = new LinkedList<>();
while (e != null) {
res.add(0, e.toString());
e = (Exception) e.getCause();
}
for (String s : res) {
System.out.println(s);
}
}
}
}