I often add a fail-unless function:
fail-unless() {
local result
"$@"
result=$?
if ((result != 0)); then
echo >2&1 "Failed ${result} with command '$*'."
exit ${result}
fi
}
That way, I know exactly what failed in the script.