Create a Java program that implements a graph data structure which accepts user inputs for nodes and edges, and utilizes an adjacency list representation. The program should include methods for adding and removing nodes and edges, and for traversing the graph using Breadth First Search and Depth First Search algorithms. The program should incorporate error handling for invalid input and provide clear output of the graph's structure and search results.
This prompt doesn't seem malicious.