我正在研究這個C++程序。我需要使用try throw catch異常處理。我的程序編譯。但是,它返回mouse
未找到。事實上,它應該是字laptop
,不應該被發現。我已將循環中的throw
代碼移至for
循環之外。但這並沒有解決結果如預期的那樣。在函數getProductID()
中使用throw代碼似乎是最合理的,但也許它應該在程序的另一部分?C++試試拋出Catch函數嗎?
#include<iostream>
#include<string>
using namespace std;
int getProductID(int ids[], string names[], int numProducts, string target)
{
for(int i=0; i< numProducts; i++)
{
if (names[1] == target)
return ids[i];
}
throw(target);
}
int main() //Sample code to test the getProductID function
{
int productIds[] = {4,5,8,10,13};
string products[] = {"computer", "flash drive","mouse","printer","camera"};
try
{
cout<< getProductID(productIds, products, 5, "mouse")<<endl;
cout<< getProductID(productIds, products, 5, "camera")<<endl;
cout<<getProductID(productIds, products, 5, "laptop")<<endl;
}
catch(string str)
{
cout<<"Error: "<< str<< " product not found."<< endl;
cout<<"End of program."<<endl;
return 0;
}
return 0;
}
使用'的std :: find'。它也會神奇地修復你的代碼。你還應該避免使用原始數組,特別是在將它們傳遞給函數時。 'std :: array'知道它的大小並且執行效率一樣。 – chris
請拋出一些std :: exception - 拋出std :: string是醜陋的 –
感謝Dieter的提示。我對學習這一點很陌生。你可以舉個例子拋出std :: exception拋出std :: string嗎? – user2972340