Przedstaw choć jedno miejsce w którym własna funkcja ma przewagę nad blokiem
try {
} catch (Exception $e) {
}
1)Masz tutaj pełną dowolność co zrobisz po 'wykryciu' wyjątku, nie rozumiem co niby Cie ogranicza ?
2)jako że jest to natywna funkcja jest zapewne (nie wiem na pewno) znacznie szybsza od zainicjowanej przez samego użytkownika.
3)Mechanizm ten służy do obsługi wyjątków, jeżeli jest to zwykła akcja która wywołuje dwie różne funkcje w zależności od typu atrybutu (przykładowo) to nie powinieneś oczywiście używać wyjątków ale zwykłych instrukcji warunkowych tak jak przytoczyłeś to powyżej.
Tak jak w każdym przypadku trzeba po prostu znać umiar w tym co się robi.