Szkoda, że nie pokazał przykładu użycia. Od wyjątków w Javie nie da się uciec. Tak czy siak wszystkie funkcje używające używające bibliotek będą musiały używać bloków try {} catch {}.
Dodatkowo kod stanie się mniej czytelny, bo co wywołanie funkcji trzeba będzie ręcznie sprawdzać czy nie zwróciła błędu.
Zamiast funkcji w stylu
PROPERTY downloadSomeClassProperty(String key) {
URL url = generateURL();
DATA data = fetchData(url);
SOME_CLASS someClass = parseData(data);
return someClass.getProperty(key);
}
public void someUIAction() {
try {
// .... jakiś kod
PROPERTY someProperty = downloadSomeClassProperty(someKey);
// .... jakiś kod
}
catch (Exception e) {
// show error
}
}
Trzeba będzie napisać
Result<PROPERTY> downloadSomeClassProperty(String key) {
Result<URL> url = generateURL();
if (url.isError())
return new Result<PROPERTY>(url.getError());
Result<DATA> data = fetchData(url);
if (data.isError())
return new Result<PROPERTY>(data.getError());
SOME_CLASS someClass = parseData(data);
if (someClass.isError())
return new Result<PROPERTY>(someClass.getError());
return someClass.getProperty(key);
}
public void someUIAction() {
// .... jakiś kod
PROPERTY someProperty = downloadSomeClassProperty(someKey);
if (someProperty.isError()) {
// show error
return;
}
// .... jakiś kod
}