C++ IOS::exceptions() 函式



C++ 的std::ios::exceptions()函式用於管理輸入/輸出流物件的狀體標誌,並確定這些標誌中的哪些將觸發異常。透過呼叫此函式,可以將流設定為針對特定錯誤狀態(如 failbit、badbit 或 EOF)丟擲異常。

此掩碼是成員型別 iostate 的一個物件,它是由以下任何組合形成的值 -

(成員常量)

指示 用於檢查狀態標誌的函式
good() eof() fail() bad() rdstate()
goodbit無錯誤(零值 iostate true false false false goodbit
eofbit輸入操作到達檔案末尾 false true false false eofbit
failbitI/O 操作中的邏輯錯誤 false false true false failbit
badbitI/O 操作中的讀/寫錯誤 false false true true badbit

語法

以下是 std::ios::exceptions() 函式的語法。

iostate exceptions() const;
void exceptions (iostate except);

引數

  • except - 由要設定的錯誤狀態標誌位組合形成的成員型別 iostate 的位掩碼值。

返回值

它返回成員型別 iostate 的一個位掩碼,表示呼叫此成員函式之前存在的異常掩碼。

異常

如果丟擲異常,則流處於有效狀態。

資料競爭

訪問或修改流物件。

對同一流物件的併發訪問可能會導致資料競爭。

示例

在以下示例中,我們將考慮 exceptions() 函式的基本用法。

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream a("11 CIAZ");
    int x;
    try {
        a.exceptions(std::ios::failbit);
        a >> x;
        std::cout << "Number read: " << x << std::endl;
        a >> x;
    } catch (const std::ios_base::failure& e) {
        std::cerr << " " << e.what() << std::endl;
    }
    return 0;
}

輸出

以上程式碼的輸出如下:

Number read: 11
basic_ios::clear: iostream error

示例

考慮以下示例,我們將手動設定 badbit 以模擬錯誤的寫入操作。

#include <iostream>
#include <sstream>
int main()
{
    std::ostringstream a;
    a.exceptions(std::ostringstream::badbit);
    try {
        a << "TutorialsPoint, TP!";
        a.setstate(std::ios_base::badbit);
        a << "Welcome";
    } catch (const std::ios_base::failure& e) {
        std::cerr << " " << e.what() << '\n';
    }
    return 0;
}

輸出

以下是以上程式碼的輸出:

basic_ios::clear: iostream error
ios.htm
廣告

© . All rights reserved.