「バグは発見できるからこそバグ」だし「対処している例外はバグではない」なわけだ

例えば手続き型言語の代表例なC言語で、
double foo(double p,double q){ return p/q; }
等というCのコードがあっても、「0除算例外が発生しそうだから、これはバグの潜むコード」とみなしてはならない。
「foo()の呼び出し元で、fooの第二実引数が0に成りうるなら、これはバグの潜むコード」とみなさなければならないのだ。

つまり、呼び出し元(=親)と呼び出し先(=子)に見れる関係の時、
実行される順序に従って、例外が適切に処理されていればそれは「バグではない」といえる。
--------
さーて、ここまで書いたけど、メチャクチャなこと書いてるよな。
C++で例外機構を取り入れて
int main(){
try{
MainHogeClass p;
p.Run();
}catch(...){ std::cout << "例外発生したよー"; }
}
なんて書くと、「(標準例外に関しては)バグの無いプログラムの出来上がり」ってほざかれるわけだ。
かといって、
int main{
double p,q;
try{
p=10;
cout << "実数を入力してください:";
cin >> q;
cout << p/q;
}catch(...){ cout << "0除算か、他の例外が発生しました"; }
}
とかかれて、「バグの無いプログラムの出来上がり」て言われても。
そうだね、っていえると思う…さーて、バグって何でしょーねぇ