Home > DeveloperSection > Forums > How to deal with checked exception (UnsupportedEncodingException) that can never occurs?
Sanjay Sharma
Sanjay Sharma

Total Post:45

Points:315
Posted on    November-16-2014 10:56 PM

 Android Exception Handling  Java  Exception 
Ratings:


 1 Reply(s)
 636  View(s)
Rate this:

I am trying transform a string to UTF-8 encoding. But the compilation fails because some code "throws UnsupportedEncodingException".

String s = "1,2,3,4";

String smsext = new String(s.getBytes(),"UTF-8");

how to solve this ?



David Miller

Total Post:30

Points:210
Posted on    November-17-2014 3:04 AM

The exception UnsupportedEncodingException is thrown by the String constructor (not by Android Studio !!!). This is a checked exception and so your code must handle it in some way.

In this particular case : the exception will never be thrown because "UTF-8" is hardcoded and always supported by any JVM (this is a requirement). So you can catch it silently :

String s = "1,2,3,4";

String smsext = null;

try{

    smsext = new String(s.getBytes(),"UTF-8");

}catch(UnsupportedEncodingException e){

    //can never occurs

}

But I don't recommend this over simplistic approach because silently catching an exception is almost always a very bad practice. A more appropriate solution for catched exception that never append is to rethrow the exception encapsulated in a non catched exception :

String s = "1,2,3,4";

String smsext = null;

try{

    smsext = new String(s.getBytes(),"UTF-8");

}catch(UnsupportedEncodingException e){

    //can never occurs because UTF-8 is always supported

    throw new RuntimeException(e);

}

With this code, if one day you change the body of the try-catch block so that UnsupportedEncodingException can possibly occurs : the exception won't be ignored silently. 


Don't want to miss updates? Please click the below button!

Follow MindStick