zoukankan      html  css  js  c++  java
  • C++基础知识(4)---例外、异常处理

         Java熟悉的朋友们都很清楚,java中的异常处理机制是非常完善的。并且java强制使用异常处理,用户必须对有可能出现异常的情况进行处理。

        在C++中并没有强制用户使用异常处理,但是使用异常处理将会使您的程序更加的简健壮。

        在C++中,一个函数在执行的过程中可以识别异常,并告诉异常的发生。这种通告机制称为 抛出异常 ,使用关键字throw。异常抛出后,可以由函数的调用者进行 捕捉 并进行处理,使用关键字catch .我们一般讲可能会抛出异常的程序块放到 try 语句中去执行,以便用 catch 来进行捕捉。  

     1 try
     2 {
     3   f();   //f() 可能抛出一些异常  
     4 }
     5 
     6 catch(int a)
     7 {
     8    ............
     9 }
    10 catch(int b)
    11 {
    12   .........
    13 }

          try 程序块可能会抛出异常,有catch 程序块来进行捕捉。catch 块之间的顺序可以任意,但是必须位于 try 之后,另外catch 块会将抛出的异常类型进行对比,如果匹配则进行捕捉

       举一个例子 

     1 #include <iostream>
     2 #include <string>
     3 
     4 using namespace std;
     5 
     6 void main()
     7 {
     8     string str;
     9     int index, length;
    10     while (true)
    11     {
    12         cout << "please enter the index and length to erase:" << endl;
    13         cin >>index>>length;
    14         try
    15         {
    16             str.erase(index, length);
    17         }
    18         catch (out_of_range)
    19         {
    20             continue;
    21         }
    22         break;
    23     }
    24 }

           如果输入的index大于字符串的长度将会引发一个异常out_of_range,即数组下标越界,这时异常就会被catch语句块捕捉到并进行处理。

       (运行之后感觉这个程序有问题,结果总是不确定的,但还不到是什么问题。。。。。。。。。。)

  • 相关阅读:
    redis系列(五):搭建redis-cluster集群
    redis系列(四):切换RDB备份到AOF备份
    python写一个随机点名软件
    java使用flink集成mybatis每五分钟实时计算小时内用户行为数据
    本地缓存google.guava及分布式缓存redis 随笔
    spring boot+spring security 使用随笔
    MVEL2.0的使用实例(一)
    springboot2.x优雅的整合mybatis
    Springboot全套技术培训和常用框架整合
    私有云篇-[1相关技术]
  • 原文地址:https://www.cnblogs.com/wyuzl/p/6212914.html
Copyright © 2011-2022 走看看