Are unlikely to fail. (I find pipeline error handling difficult: grep '\.pl$' foo | sort | uniq | xargs find. Now exactly where is the error? )
zsh provides a pipestatus variable which is an array of the exit statusen from each component of the last pipeline. Granted that doesn't solve problems where one part of the pipe is generating bad data, but it does let you handle a few more kinds of problems.
Update: Oop, quite right. Recent bash have stolen :) this zsh functionality (along with programmable completions and other Z goodies :).
Ted
-- "That which we persist in doing becomes easier, not that the task itself has become easier, but that our ability to perform it has improved."
--Ralph Waldo Emerson