Erik
Erik

Reputation: 89

Java handle errors & exceptions

I have a class that allows to download a file from the internet:

public String download(String URL) {

try {
 if(somethingbad) {
  // set an error?
  return false; 
 }
}
//...
catch (SocketException e) {
 e.printStackTrace();
}
catch (UnsupportedEncodingException e) {
 e.printStackTrace();
}
catch (ClientProtocolException e) {
 e.printStackTrace();
}
catch(InterruptedIOException e) {
e.printStackTrace();
}
catch (IOException e) {
 e.printStackTrace();
}
}

Now, I am calling this function in another class and i want to show a message that will help me figure out why this will not work.

what can i do to display something like this?

HTTPReq r = new HTTPReq("http://www.stack.com/api.json");    
if(r.err) {
 showMessage(getMessage());
}

and the getMessage() will return the SocketException or IOException or even "empty url" if the URL is empty.

Upvotes: 0

Views: 70

Answers (2)

Lazarus
Lazarus

Reputation: 46

First of all I do not think you need all these:

SocketException, UnsupportedEncodingException, ClientProtocolException since they extend IOException

but if you want you can do this:

public String download(String URL) throws IOException, Exception {

    try {
        if(somethingbad) {
            throws new Exception("My Message);
        }
    }
    catch (IOException e) {
        throw e;
    }
}

And then in your other file:

try {
    // some stuff
}
catch (Exception e) {
    // do something with e.getMessage();
}
catch (IOException e) {
    // do something with e.getMessage();
}

Upvotes: 2

vishal
vishal

Reputation: 895

Instead of just doing e.printStackTrace() inside the catch blocks, throw the exception back like so:

throw e;     

Then you can surround the calling code like so:

try {
    HTTPReq r = new HTTPReq("http://www.stack.com/api.json");
} catch (Exception e) {
    // Show error message
}

Upvotes: 2

Related Questions