>238
>if ( ! ret ) { // エラー1 }
俺なら逆だな
んで、

if((ret = func1())!=0){ // エラー1 }
if((ret = func2())!=0){ // エラー2 }
if((ret = func3())!=0){ // エラー3 }

で正常時の処理の流れが分かりやすい