<div>아래 코드는 열혈강의 c++교재의 소스인데요</div> <div>그런데</div> <div>만일 245(혹은 아무숫자)와 0을 입력한다면 F10키를 눌러가며 디버깅을 하면</div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>cout<<"결과는"<<divide(a,b)<<"입니다"<<endl;</b></div> <div>에서 <span style="font-size:9pt;">divide(a,b)함수를 호출해서 throw구문에서 catch구문이 나올때까지 호출한 함수에서 찾다가 없으면 함수를 종료하고 그래서 main함수에 있는 catch까지 도달한다고 써 있는데요.</span></div> <div> <div>근데 제가 알기 로는 cout함수는 왼쪽부터 실행되고 프로그램이란건 순차적으로 진행되어야 하기때문에</div> <div>그렇다면 화면에 <span style="font-size:9pt;">최소한 "</span><b style="font-size:9pt;">결과는</b><span style="font-size:9pt;">" 이 화면에 출력되야 하니까</span></div></div> <div><br></div> <div>"<b>결과는</b><span style="font-size:9pt;"><b>0으로 나누었습니다</b>"</span></div> <div>"<b>프로그램이 끝났습니다.</b>"</div> <div><br></div> <div>이런식으로 나와야 정상 아닌가요?</div> <div><br></div> <div>그런데 실제 실행하면</div> <div><br></div> <div>"<b style="font-size:9pt;">0으로 나누었습니다"</b></div> <div>"<b>프로그램이 끝났습니다.</b>"</div> <div><br></div> <div><b style="font-size:9pt;">라고 나오면서 "결과는"</b><b>의 출력이 무시되더군요.</b></div> <div>분명히 cout함수로 시작되는 구문인데 <b>divide(int a,int b)함수가 호출해서 </b><span style="font-size:9pt;"><b>try throw함수의 예외처리가 구문이 실행되면</b></span><b style="font-size:9pt;"> </b><span style="font-size:9pt;">어째서 cout의 출력이 완전히 무시되는지 그 이유를 꼭 알고 싶네요.</span></div> <div><span style="font-size:9pt;"><br></span></div> <div>#include <iostream></div> <div>using namespace std;</div> <div><br></div> <div>int divide(int a,int b)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(b==0)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>throw(b);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return a/b;</div> <div>}</div> <div>int main()</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int a,b;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>cout<<"두개의 숫자 입력";</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>cin>>a>>b;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>try{</div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>cout<<"결과는"<<divide(a,b)<<"입니다"<<endl;</b></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>catch(int b)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>cout<<"0으로 나누었습니다."<<endl;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>cout<<"프로그램이 끝났습니다."<<endl;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div>}</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.