C++学习:第三章C++语言基础 - (十四)格式化输出、异常

格式化输出:

cout.width(10),输出宽度10

等效写法:

cout << setw(10) << 123; //需头文件#include<iomanip>

无论哪种写法,都是只对后面一个输出有效.

是用来输出八进制和十六进制常量的前缀,八进制的前缀是0,十六进制常量的前缀是0x;

cout << showbase << 123 << endl;

用来输出小数

cout << showpoint << 1.0;

设置精度

cout << setprecision(2) << 1,0;

 

异常

catch(…)能够捕获所有类型的异常,但是无法区分出异常的类型,以至于无法输出异常

每个catch只是负责它所对应try块抛出的异常

#include <iostream>
using namespace std;
#include <exception>

class MyType{};

class MyException : public exception{
public:
    //throw()意味着这个函数不会抛出异常
    const char* what() const throw(){return "My Excrption";}
};


void f()
//这里是个声明,需说明所有可能出现的异常类型
//不声明意味着可能抛出任何类型的异常
//throw()意味着这个函数不会抛出 异常
throw(int, double, const char*, MyType, MyException)
{
    cout << "input a num" << endl;
    int n;
    cin >> n;

    if (n==1){throw MyException();}
    if (n==2){throw MyType();}
    if (n==3){throw "hello";}
    if (n==4){throw 2;}
    if (n==5){throw 1.2;}
    cout << " ==== f() end ===" << endl;
}


int main (){

    try{
        f();
    }
    //说明:catch做严格的类型匹配,如果是 char* e 则匹配不到 hello
    catch(const char* e){cout << "const char* " << e << endl; }
    catch(double e){cout << "double " << e << endl; }
    catch(int e){cout << "int " << e << endl; }

    //它可以匹配到 MyException e
    //catch(exception e){cout << "MyType " << e.what() << endl; }
    catch(MyException e){cout << "MyException " << e.what() << endl; }

    //其他未知类型异常
    catch(...){cout << "... " << "其他类型异常" << endl; }

    cout << " ==== main() end ===" << endl;
    cin.ignore();

    getchar();
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值