f1508.cpp
资源名称:c.rar [点击查看]
上传用户:puke2000
上传日期:2022-07-25
资源大小:912k
文件大小:2k
源码类别:

C#编程

开发平台:

Visual C++

  1. //=====================================
  2. // f1508.cpp
  3. // 异常申述
  4. //=====================================
  5. #include<iostream>
  6. #include<exception>
  7. using namespace std;
  8. //-------------------------------------
  9. class HardwareErr{}; 
  10. class SizeErr{}; 
  11. class PerformErr{}; 
  12. class A{}; 
  13. //-------------------------------------
  14. void metalPieseProccess(int)throw(PerformErr,SizeErr);
  15. void metalGroupProccess(int)throw(PerformErr);
  16. void hProccess()throw(SizeErr); 
  17. void vProccess()throw(SizeErr); 
  18. void performTest()throw(PerformErr); 
  19. void calcVSize()throw(SizeErr); 
  20. bool tooSmallHSize(){ return false; } 
  21. bool performTestFail(){ return false; } 
  22. bool tooSmallVSize(){ return false; } 
  23. void myUnexpectedHandler(){
  24.   cout<<"AnyKindOfError.n";
  25.   //粗暴停机
  26. }//------------------------------------
  27. int main(){
  28.   set_unexpected(myUnexpectedHandler);
  29.   try{
  30.     for(int i=0; i<10; ++i) metalGroupProccess(i);
  31.     // 其他加工
  32.   }catch(PerformErr){
  33.     cout<<"PerformError Stop.n";
  34.     // 加工件离机,温柔停机
  35.   }
  36. }//------------------------------------
  37. void metalGroupProccess(int)throw(PerformErr){
  38.   try{
  39.     for(int i=0; i<10; ++i) metalPieseProccess(i);
  40.   }catch(SizeErr){
  41.     cout<<"SizeError.n";
  42.     // 片加工尺寸故障...报废本组金属
  43.   }catch(PerformErr){
  44.     cout<<"PerformErr.n";
  45.     // 性能测试失败善后处理
  46.     throw;
  47.   }
  48. }//------------------------------------
  49. void metalPieseProccess(int)throw(PerformErr,SizeErr){
  50.   hProccess();
  51.   performTest();
  52.   try{
  53.     vProccess();
  54.     // metalPieseProccess
  55.   }catch(SizeErr){
  56.     cout<<"VSizeErrReport.n";
  57.     // 纵向尺寸错误...报废本片金属
  58.   }
  59. }//------------------------------------
  60. void calcVSize()throw(SizeErr){
  61.   // ...
  62.   if(tooSmallVSize())throw SizeErr();
  63.   throw A();
  64.   // ...
  65. }//------------------------------------
  66. void vProccess()throw(SizeErr){
  67.   calcVSize();
  68.   //...
  69. }//------------------------------------
  70. void hProccess()throw(SizeErr){
  71.   if(tooSmallHSize()) throw SizeErr();
  72.   //...
  73. }//------------------------------------
  74. void performTest()throw(PerformErr){
  75.   if(performTestFail()) throw PerformErr();
  76.   //...
  77. }//====================================
  78.