このコードの書き方はアリか?

いちいちエラー表示関数を書きたくないし、下にthrough out したいときだった。


{
//文字列を取得
CEdit edit = mEdit;
std::string str;
std::string aout;
{
if(false==GetWindowTextEdit(edit,str)){
goto ERR;
}
if(false==GetWindowTextEdit(mOutputEdit,aout)){
goto ERR;
}
goto END;
ERR:
dODS("GetWindowTextEdit() error");
return 0;
END:;
}
ちなみに最後の終了目印はEND:でいいはずなのだがEND:;としないとVC6ではコンパイルが通らない。何故だろう?