I'm trying to decode URLs that may be single or double percent encoded using decodeURIComponent(). Because I don't want to get an "URI malformed" when a string is attempted to be decoded that only contains %25 (5), I'm using this try/catch block. Have I used the try/catch block correctly? It seems to work, but I'm trying to understand if this is a best practice approach, or if I've over-complicated things.
var uriCleanup = function (str) {
var cln = function (str) {
try {
str = decodeURIComponent(str);
//try to decode the URI again
return cln(str);
} catch (e) {
//if error thrown, URI contains single percent symbol
//return the str as it was the last time it was decoded
return str;
}
};
return cln(str);
};