异常的异地处理 发现异常时,在发现地 (如在被调用的函 数中)有时不知道如何处理这个异常,或 者不能很好地处理这个异常,要由程序的 其它地方(如函数的调用者)来处理。 例如,前面的函数中打开文件失败,这时可以 由调用者重新提供一个文件来解决。 如何实现异常的异地处理?
异常的异地处理 ◼ 发现异常时,在发现地(如在被调用的函 数中)有时不知道如何处理这个异常,或 者不能很好地处理这个异常,要由程序的 其它地方(如函数的调用者)来处理。 • 例如,前面的函数f中打开文件失败,这时可以 由调用者重新提供一个文件来解决。 ◼ 如何实现异常的异地处理?
■一种解决途径: ● 通过函数的返回值,或指针/引用类型的参数,或全 局变量把异常情况通知函数的调用者,由调用者处理。 例如: int f(char *filename) ifstream file(filename); if (file.fail()) return-1;/把错误情况告诉调用者 int x; cin >X; return 0;
◼ 一种解决途径: • 通过函数的返回值,或指针/引用类型的参数,或全 局变量把异常情况通知函数的调用者,由调用者处理。 例如: int f(char *filename) { ifstream file(filename); if (file.fail()) return -1; //把错误情况告诉调用者 int x; cin >> x; ...... return 0; }