そのため、現在の関数から抜け出して関数の先頭に戻る必要がある状況があります。これらのいくつかにはエラーチェックが含まれており ( try
、throw
、またはcatch
まだ学習していません)、最近では再帰を使用しています。再帰は a のようには機能せずgoto
、単に関数の先頭に戻るだけでなく、それ自体の別のコピーを作成するという事実を無視します。したがって、再帰を使用してクライアントの入力エラーなどをキャッチすると、クライアントが十分なエラーを発生させると、潜在的なメモリリークにつながります。
関数を「再起動」できる特定の関数があるかどうか疑問に思っていました。
疑似疑似コードを使用した例として:
int foo(){
//prompt for and receive input
if(!matchCondition)
//stop foo() and restart foo()
//does something
}
私が考えることができる他の唯一のことは、関数呼び出しをループに入れるmain()
ことです. それが機能しない別の例は、関数が制限のないものを返す必要がある場合で、エラーが発生することなく「エラー コード」が自然に生成される場合です。main
main
bool ifError=1;
while(ifError){
ifError = foo();
}
int foo(){
//prompt for and receive input
if(!matchCondition)
return 1;
//do something
return 0;
}
私が思いつくのは、呼び出されgoto
た行を指すステートメントだけです。foo()
それが存在する場合でも、それが私ができる最悪のことであることはわかっています。