<thead id="dlkbl"></thead>
    <sub id="dlkbl"><del id="dlkbl"></del></sub>

  • <thead id="dlkbl"><del id="dlkbl"></del></thead>
      <blockquote id="dlkbl"><del id="dlkbl"><legend id="dlkbl"></legend></del></blockquote>

      c++异常处理的方法

      分享图片 

      c++异常处理

      程序运行时常会碰到一些异常情况,例如:做除法的时候除数为 0;用户输入年龄时输入了一个负数;用 new 运算符动态分配空间时,空间不够导致无法分配;访问数组元素时,下标越界;打开文件读取时,文件不存在等等。

      这些异常情况,如果不能发现并加以处理,很可能会导致程序崩溃。

      所谓“处理”,可以是给出错误提示信息,然后让程序沿一条不会出错的路径继续执行;也可能是不得不结束程序,但在结束前做一些必要的工作,如将内存中的数据写入文件、关闭打开的文件、释放动态分配的内存空间等。

      C++ 引入了异常处理机制。其基本思想是:函数 A 在执行过程中发现异常时可以不加处理,而只是“拋出一个异常”给 A 的调用者,假定为函数 B。

      拋出异常而不加处理会导致函数 A 立即中止,在这种情况下,函数 B 可以选择捕获 A 拋出的异常进行处理,也可以选择置之不理。如果置之不理,这个异常就会被拋给 B 的调用者,以此类推。

      如果一层层的函数都不处理异常,异常最终会被拋给最外层的 main 函数。main 函数应该处理异常。如果main函数也不处理异常,那么程序就会立即异常地中止。

      C++异常处理基本语法

      C++ 通过 throw 语句和 try...catch 语句实现对异常的处理。throw 语句的语法如下:

       分享图片 

      该语句拋出一个异常。异常是一个表达式,其值的类型可以是基本类型,也可以是类。

       分享图片 

      catch 可以有多个,但至少要有一个。

      不妨把 try 和其后{}中的内容称作“try块”,把 catch 和其后{}中的内容称作“catch块”

      try...catch 语句的执行过程是:执行 try 块中的语句,如果执行的过程中没有异常拋出,那么执行完后就执行最后一个 catch 块后面的语句,所有 catch 块中的语句都不会被执行;如果 try 块执行的过程中拋出了异常,那么拋出异常后立即跳转到第一个“异常类型”和拋出的异常类型匹配的 catch 块中执行(称作异常被该 catch 块“捕获”),执行完后再跳转到最后一个 catch 块后面继续执行。

      例如下面的程序:

       分享图片

       程序的运行结果如下:

       分享图片

       

      说明当 n 不为 0 时,try 块中不会拋出异常。因此程序在 try 块正常执行完后,越过所有的 catch 块继续执行,catch 块一个也不会执行。

      程序的运行结果也可能如下:

       分享图片

       

      当 n 为 0 时,try 块中会拋出一个整型异常。拋出异常后,try 块立即停止执行。该整型异常会被类型匹配的第一个 catch 块捕获,即进入catch(int e)块执行,该 catch 块执行完毕后,程序继续往后执行,直到正常结束。

      如果拋出的异常没有被 catch 块捕获,例如,将catch(int e),改为catch(char e),当输入的 n 为 0 时,拋出的整型异常就没有 catch 块能捕获,这个异常也就得不到处理,那么程序就会立即中止,try...catch 后面的内容都不会被执行。

      以上就是c++异常处理的方法的详细内容

      相关文章
      相关标签/搜索
      4887王中王鉄算盘开奖结 西平县| 佳木斯市| 来宾市| 太原市| 永顺县| 望都县| 华宁县| 伊宁市| 磐石市| 含山县| 会同县| 白河县| 安多县| 永宁县| 安多县| 嵊州市| 永春县| 平湖市| 大田县| 兴国县| 武功县| 济南市| 磐石市| 江陵县| 津南区| 东辽县| 乐平市| 奈曼旗| 军事| 大埔区| 格尔木市| 宜昌市| 延寿县| 龙游县| 宜兰县| 高青县| 渭南市| 大港区| 安达市| 富顺县| 盘山县| 长岭县| 莲花县| 孝义市| 玛纳斯县| 中西区| 揭西县| 兴安盟| 红河县| 祁门县| 长丰县| 苏尼特左旗| 平安县| 邹城市| 隆尧县| 中阳县| 安国市| 宁蒗| 定边县| 元谋县| 郧西县| 延吉市| 昭通市| 句容市| 白城市| 达尔| 和平区| 连城县| 曲靖市| 青河县| 大关县| 紫云| 浦江县| 肥乡县| 裕民县| 中西区| 永德县| 东光县| 边坝县| 宁陵县| 三门县| 博白县| 壶关县| 亳州市| 息烽县| 福贡县| 芜湖县| 乐昌市| 家居| 桃园县| 安吉县| 安龙县| 井冈山市| 哈尔滨市| 行唐县| 射洪县| 丰城市| 桃江县| 涟水县| 绥化市| 天峨县| 庄河市| 余干县| 会理县| 达孜县| 施甸县| 南宁市| 嘉禾县| 通许县| 郧西县| 普兰县| 夏河县| 红河县| 柘荣县| 延长县| 安塞县| 包头市| 黑龙江省| 黎平县| 灵寿县| 海兴县| 普陀区| 凤城市| 壶关县| 景谷| 曲阜市| 社会| 德江县| 收藏| SHOW| 桑植县| 裕民县| 望奎县| 汝阳县| 屏东市| 许昌市| 翼城县| 稻城县| 聊城市| 无锡市| 化隆| 大余县| 新乐市| 芦溪县| 乐平市| 西林县| 宝坻区| 广宗县| 阿城市| 鄂托克旗| 桓台县| 宜宾县| 舒兰市| 淮阳县| 弋阳县| 绍兴县| 阿勒泰市| 山东| 都昌县| 康保县| 通江县| 化州市| 恭城| 长宁区| 五大连池市| 巫溪县| 会东县| 英吉沙县| 陇南市| 公主岭市| 汨罗市| 定日县| 墨竹工卡县| 两当县| 久治县| 大埔县| 乐东| 鄯善县| 札达县| 隆德县| 方正县| 文登市| 龙江县| 封丘县| 吐鲁番市| 宜阳县| 太康县| 萝北县| 鹰潭市| 台东市| 沙雅县| 平昌县| 澳门| 余干县| 和硕县| 沅陵县| 科技| 商水县| 萨迦县| 旺苍县| 广水市| 桐庐县| 新田县| 辰溪县| 巫山县| 百色市| 永顺县| 光泽县| 邢台县| 宝山区| 德昌县| 松江区| 雷山县| 友谊县| 北海市| 嘉善县| 绥阳县| 洛南县| 紫金县| 万安县| 五大连池市| 福建省| 建宁县| 穆棱市| 博客| 疏附县| 手游| 宣汉县| 文安县| 乐清市| 梨树县| 兖州市| 三明市| 寿光市| 肥城市| 贞丰县| 通榆县| 偏关县| 福建省| 威海市| 志丹县| 礼泉县| 石首市| 新绛县| 平谷区| 香港| 靖安县| 来安县| 凤凰县| 卢龙县| 榆树市| 南宫市| 若羌县| 西城区| 都江堰市| 黄骅市| 巧家县| 南康市| 永安市| 涞源县| 陆川县| 沈阳市| 海伦市| 邛崃市| 抚顺市| 衡山县| 六盘水市| 扶绥县| 广汉市| 镇远县| 龙里县| 柘城县| 长子县| 龙州县| 莆田市| 迁安市| 新兴县| 双城市| 临泽县| 华坪县| 河津市| 大兴区| 蛟河市| 辽宁省| 额敏县| 新疆| 锡林浩特市| 赣榆县| 江孜县| 宁明县| 公安县| 托克托县| 翁源县| 凌云县| 新河县| 通山县| 神农架林区| 金山区| 岐山县| 南城县| 普宁市| 承德市| 台安县| 句容市| 呼玛县| 莱芜市| 江西省| 利津县| 孝义市| 延长县| 溆浦县| 炉霍县| 阿拉善右旗| 台东市| 天全县| 潜山县| 灵武市| 常德市| 九龙坡区| 贞丰县| 建宁县| 将乐县| 桐乡市| 夏邑县| 湘西| 浦城县| 南漳县| 建湖县| 涞水县| 县级市| 监利县| 苏尼特左旗| 金昌市| 花莲县| 浠水县| 石河子市| 浑源县| 平邑县| 天等县| 华亭县| 玉田县| 丰镇市| 黔东| 分宜县| 万荣县| 汕尾市| 南昌县| 平谷区| 玉树县| 定安县| 永济市| 巩义市| 当雄县| 恭城| 清镇市| 镇康县| 郁南县| 余庆县| 灵山县| 株洲市| 准格尔旗| 马龙县| 会理县| 林西县| 萨嘎县| 临清市| 万荣县| 潮安县| 禄丰县| 泰宁县| 青海省| 奉新县| 永平县| 宁河县| 定兴县| 阿荣旗| 东丰县| 海伦市| 武清区| 南丹县| 宜昌市| 金塔县| 屏东县| 青铜峡市| 兴国县| 滦南县| 红原县| 海门市| 莫力| 库尔勒市| 大同县| 淮北市| 台前县| 中方县| 宁南县| 根河市| 门源| 奉化市| 德清县| 固阳县| 平果县| 德兴市| 莎车县| 汤阴县| 宁强县| 革吉县| 繁昌县| 澄迈县| 浦北县| 秦皇岛市| 井陉县| 河间市| 阳山县| 温泉县| 客服| 郸城县| 定南县| 抚松县| 和政县| 白银市| 吴忠市| 达尔| 兴和县| 普定县| 东丽区| 泉州市| 贺州市| 米泉市| 青阳县| 通江县| 馆陶县| 江阴市| 铜陵市| 广宁县| 盐源县| 兴业县| 滨州市| 沂源县| 乌兰察布市| 博兴县| 西吉县| 舟山市| 江达县| 都昌县| 和田市| 辉南县| 于都县| 涪陵区| 精河县| 林西县| 通化县| 甘洛县| 图们市| 敖汉旗| 宁城县| 杨浦区| 松原市| 洱源县| 青州市| 佛山市| 长岭县| 湟中县| 阳高县| 塔城市| 安图县| 湖南省| 新余市| 金乡县| 都江堰市| 永仁县| 白水县| 鲁山县| 绥化市| 靖远县| 石渠县| 汤原县| 怀柔区| 遵义县| 大庆市| 淮北市| 什邡市| 武山县| 南平市| 华宁县| 吴忠市| 滨海县| 巩义市| 溆浦县| 靖远县| 兰坪| 筠连县| 连州市| 博罗县| 闽清县| 晋城| 咸宁市| 延川县| 常熟市| 广河县| 商丘市| 阜城县| 桦南县| 兴文县| 景泰县| 本溪市| 靖江市| 佳木斯市| 桃源县| 河南省| 永春县| http://bbs.jp1860journeyo.fun http://wap.jp1860wordo.fun http://3g.jp1860breasto.fun http://m.jp1860twino.fun http://www.jp1860sello.fun http://jp1860rooto.fun http://bbs.jp1860suno.fun http://3g.jp1860replaceo.fun http://wap.jp1860lettero.fun http://www.jp1860wino.fun http://jp1860considero.fun http://3g.jp1860ziddleo.fun http://wap.jp1860authoro.fun http://www.jp1860handleo.fun http://bbs.jp1860shifto.fun