Java if vs. try / catch overhead

Existe alguma sobrecarga em Java para usar um tenta / captura, em oposição a umif block (supondo que o código incluído não o solicite

Por exemplo, considere as duas implementações simples a seguir de um método de "ajuste seguro" para seqüências de caracteres:

public String tryTrim(String raw) {
    try {
        return raw.trim();
    } catch (Exception e) {
    }
    return null;
}

public String ifTrim(String raw) {
    if (raw == null) {
        return null;
    }
    return raw.trim();
}

Se oraw entrada raramente énull, existe alguma diferença de desempenho entre os dois métodos?

Além disso,é um bom padrão de programação para usar otryTrim() abordagem para simplificar o layout do código, especialmente quando muitosif blocks a verificação de condições de erro raras pode ser evitada colocando o código em um bloco try / catch?

Por exemplo, é um caso comum ter um método comN parameters, que usaM <= N perto do início, falhando rápida e deterministicamente se algum desses parâmetros for "inválido" (por exemplo, uma cadeia nula ou vazia), sem afetar o restante do códig

Nesses casos, em vez de precisar escreverk * M if blocks (Ondek é o número médio de verificações por parâmetro, por exemplok = 2 para cadeias nulas ou vazias), um tenta / captura bloco @ reduziria significativamente o código e um comentário de 1-2 linhas poderia ser usado para observar explicitamente a lógica "não convencional"

Esse padrão também aceleraria o método, especialmente se as condições de erro ocorrerem raramente, e o faria sem comprometer a segurança do programa (assumindo que as condições de erro sejam "normais", por exemplo, como em um método de processamento de cadeia em que nulo ou vazio valores são aceitáveis, embora raramente estejam presentes

questionAnswers(5)

yourAnswerToTheQuestion