異常捕捉機制:
一旦執行throw立刻轉到catch,不再進行throw下面內容;
可設定不同型別throw值,但一次只能throw乙個值, 與return類似
若乙個型別有多個值,需拷貝,可動態記憶體分配後指標傳遞, 但麻煩. 通常直接const char* err接收即可
...
throw
"肉肉好帥!";.
..throw
"肉肉好傻!";.
..throw
"肉肉好萌!"
;try()
catch
(const
char
* err)
catch順次進行,只執行乙個匹配分支;catch(…)通配。
如果throw float無匹配,會中斷(預設功能會呼叫abort終止程式),並顯示microsoft c++異常:記憶體位置******處的float
最近的catch才能拿到throw,若最近的catch再throw,才會throw給次近的catch
若throw;
上次接到啥就扔啥.要是沒接到就出錯!
一般只throw異常!
#include
#include
#include
#include
using
namespace std;
#define buffer_size 1024
//位元組數
#define element_size 1
class
beauty
~beauty()
beauty
(const beauty& other)};
//c++二進位制拷貝
void
cppcopybinary
(const
char
* dest,
const
char
* src)
//c二進位制拷貝
string ccopybinary1
(const
char
* dest,
const
char
* src)
fopen_s
(&destf_p, dest,
"wb");
// write binaryif(
!destf_p)
char buffer[buffer_size]
;int readlen =
fread_s
(buffer, buffer_size, element_size, buffer_size, srcf_p);if
(readlen <=0)
int writelen =
fwrite
(buffer, element_size, readlen, destf_p);if
(readlen != writelen)
fclose
(srcf_p)
;fclose
(destf_p)
;return
"成功!";}
void
ccopybinary2
(const
char
* dest,
const
char
* src)
fopen_s
(&destf_p, dest,
"wb");
if(!destf_p)
char buffer[buffer_size]
;int readlen =
fread_s
(buffer, buffer_size, element_size, buffer_size, srcf_p);if
(readlen <=0)
int writelen =
fwrite
(buffer, element_size, readlen, destf_p);if
(readlen != writelen)
fclose
(srcf_p)
;fclose
(destf_p)
;throw
"成功!";}
void
ccopybinary3
(const
char
* dest,
const
char
* src)
throw
(char
,int
)fopen_s
(&destf_p, dest,
"wb");
if(!destf_p)
char buffer[buffer_size]
;int readlen =
fread_s
(buffer, buffer_size, element_size, buffer_size, srcf_p);if
(readlen <=0)
int writelen =
fwrite
(buffer, element_size, readlen, destf_p);if
(readlen != writelen)
fclose
(srcf_p)
;fclose
(destf_p)
;throw0;
}//可以多次扔
void
twotimes()
catch(.
..)}
intmain()
catch
(const
char
* err)
cout <<
"throw new string/new char(char),形參string*,直接輸出:"
;//建立new異常元素
trycatch
(beauty& beauty)
catch
(string* err)
catch
(int n)
}catch
(string err)
return0;
}//最佳方式:int直接扔
//字串直接"***",const char*接 (也可string()初始化,string接;若new string初始化,string *接,需記得再delete err;)
//類直接beauty()初始化,beauty&接; (若new beauty則指標接,記得釋放)
三個函式的區別:
接"***",const char*接 (也可string()初始化,string接;若new string初始化,string *接,需記得再delete err;)
//類直接beauty()初始化,beauty&接; (若new beauty則指標接,記得釋放)
三個函式的區別:
![在這裡插入描述](
二進位制檔案
本質上是文字檔案是把檔案資訊先轉化成以字元編碼的ascii碼,再儲存ascii的二進位制 而二進位制檔案是直接把檔案資訊編碼成二進位制儲存。因此在讀取的時候要考慮記憶體中二進位制 應該怎麼樣解釋。二進位制檔案的讀取是是要告訴元素的型別 編碼方式 文字檔案則預設為char型別。文字檔案是一種特殊的二進...
二進位制檔案
二進位制檔案 也叫型別檔案 二進位制檔案是由一批同一型別的資料組成的乙個資料序列,就是說乙個具體的二進位制檔案只能存放同一種型別的資料。type tmember record name string 10 email string 20 posts longint end var members a...
二進位制檔案
二進位制檔案 也叫型別檔案 二進位制檔案是由一批同一型別的資料組成的乙個資料序列,就是說乙個具體的二進位制檔案只能存放同一種型別的資料。type tmember record name string 10 email string 20 posts longint end var members a...