Почитайте про SOLID (
https://ru.wikipedia.org/wiki/SOLID_(%D0%BE%D0%B1%...
Там буква S - single responsibility (Принцип единственной ответственности).
Старайтесь писать методы и классы которые будут выполнять только какую-то одну функцию.
В вашем случае myFunction не должен уметь писать в файл - ему достаточно будет уметь обрабатывать входящую строку. Выглядеть это будет, примерно, так:
private static String myFunction(String url) {
if (some condition) {
System.err.println(url + " " + statusCode); // Видимо, логирование в консоль
return url + " " + statusCode + "\n"; // Возврат результата
}
return ""; // Это же пример, верно?))
}
И основной код:
public static void main(String[] args) throws IOException {
FileWriter err = new FileWriter("error.txt");
String result = myFunction(args);
er.write(result);
//some logic
err.write(something);
err.close();
}
В этом варианте myFunction ничего не знает о том куда писать результат своей работы. Сегодня вы хотите писать в файл, завтра в бд, а потом окажется, что достаточно вывести в консоль. Ваша функция будет оставаться неизменной в любом случае.