高等 C 語言 -- 模擬 try ... catch
高等 C 語言簡介字串指標與陣列函數結構物件導向記憶體檔案錯誤處理巨集處理C 與組合語言資料結構動態字串動態陣列鏈結串列雜湊表開發環境MakeCygwinMinGWDevC++wxDevC++編譯器gcc 編譯器TinyCC 編譯器LCC 編譯器應用主題CGI 程式GNU 程式視窗程式影像處理練習題訊息相關網站參考文獻最新修改簡體版English |
程式範例檔案:trycatch.c #include <stdio.h> #include <setjmp.h> enum Error { NoError=0, DivByZero=1, FileError=2 }; jmp_buf jumper; void run(char *astr, char *bstr, char *fileName) { // try 的主程式 int a = atoi(astr); int b = atoi(bstr); if (b == 0) // can't divide by 0 longjmp(jumper, DivByZero); int result = a/b; FILE *file; if ((file=fopen(fileName, "w")) == NULL) longjmp(jumper, FileError); else { fprintf(file, "%d/%d=%d\n", a, b, result); printf("save to file %s : %d/%d=%d\n", fileName, a, b, result); } fclose(file); } int main(int argc, char *argv[]) { int error = setjmp(jumper); // try switch (error) { // case NoError: // run(argv[1], argv[2], argv[3]); // run(); break; // case DivByZero: // catch DivByZero: printf("Error %d : Divide by zero\n", error);// ... break; // case FileError: // catch FileError: printf("Error %d : File error\n", error); // ... break; // default: // default: printf("Error %d:Unhandled error\n", error);// ... } } 輸出結果
|
page revision: 0, last edited: 03 Sep 2010 02:52
Post preview:
Close preview