当前位置: 首页 > news >正文

快速入门C++第八天——异常处理和命名空间

  • 该系列文章大部分摘自博主白鳯《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)http://t.csdn.cn/GxZ6U
  • 如有不好的影响请联系删除

异常处理

程序中常见的错位分为两大类:编译时错误和运行时错误。编译时的错误主要是语法错误,如关键字拼写错误、语句末尾缺分号、括号不匹配等。运行时出现的错误统称为异常,对异常的处理称为异常处理。

C++处理异常的办法:如果在执行一个函数的过程中出现异常,可以不在本函数中立即处理,而是发出一个信息,传给它的上一级(即调用函数)来解决,如果上一级函数也不能处理,就再传给其上一级,由其上一级处理。如此逐级上传,如果到最高一级还无法处理,运行系统一般会自动调用系统函数terminate(),由它调用abort终止程序。

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

double triangle(double a, double b, double c) {
	double s = (a + b + c) / 2;
	if (a + b <= c || a + c <= b || b + c <= a) {
		throw 1.0;        //语句throw抛出double异常
	}
	return sqrt(s * (s - a) * (s - b) * (s - c));
}

int main() {
	double a, b, c;
	try {
		cout << "请输入三角形的三个边长(a, b, c): " << endl;
		cin >> a >> b >> c;
		if (a < 0 || b < 0 || c < 0) {
			throw 1;   //语句throw抛出int异常
		}
		while (a > 0 && b > 0 && c > 0) {
			cout << "a = " << a << " b = " << b << " c = " << c << endl;
			cout << "三角形的面积 = " << triangle(a, b, c) << endl;
			cin >> a >> b >> c;
			if (a <= 0 || b <= 0 || c <= 0) {
				throw 1;
			}
		}
	} catch (double) {
		cout << "这三条边不能构成三角形..." << endl;
	} catch (int) {
		cout << "边长小于或等于0..." << endl;
	}
	return 0;
}

命名空间和头文件命名规则

命名空间:一个由程序设计者命名的内存区域。程序设计者可以根据需要指定一些有名字的命名空间,将各命名空间中声明的标识符与该命名空间标识符建立关联,保证不同命名空间的同名标识符不发生冲突。

1.带扩展名的头文件的使用
在C语言程序中头文件包括扩展名.h,使用规则如下面例子
    #include <stdio.h>
2.不带扩展名的头文件的使用
C++标准要求系统提供的头文件不包括扩展名.h,如string,string.h等。
    #include <cstring>

相关文章:

  • [1159]adb判断手机屏幕状态并点亮屏幕
  • OPENSSH PRIVATE 转换 RSA PRIVATE 以及区别
  • 计算机毕业设计ssm体育赛事信息平台dmlva系统+程序+源码+lw+远程部署
  • 网课查题公众号接口调用详细教程
  • 计算机毕业设计ssm通识教育教学系统ekzep系统+程序+源码+lw+远程部署
  • 网课查题接口对接教程
  • 网课答案搜题接口对接教程
  • 计算机毕业设计ssm桐梓娄山书店管理系统6k3s6系统+程序+源码+lw+远程部署
  • c c++源文件依赖关系分析工具
  • yolo系列之yolov4(4)
  • JavaFX、聊天程序
  • SVO2.0
  • WebWall-09.Unsafe file uploads(不安全的文件上传)
  • Docker——使用docker工具管理软件/组件的运行,镜像、容器、数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境
  • HTML5 day_01(8.5)
  • 【面试系列】之二:关于js原型
  • 07.Android之多媒体问题
  • Brief introduction of how to 'Call, Apply and Bind'
  • CSS3 变换
  • DataBase in Android
  • download使用浅析
  • Flannel解读
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • isset在php5.6-和php7.0+的一些差异
  • Material Design
  • Nacos系列:Nacos的Java SDK使用
  • passportjs 源码分析
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Vue全家桶实现一个Web App
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 使用 Docker 部署 Spring Boot项目
  • 与 ConTeXt MkIV 官方文档的接驳
  • 最简单的无缝轮播
  • FaaS 的简单实践
  • Mac 上flink的安装与启动
  • ​​​​​​​​​​​​​​Γ函数
  • #QT(一种朴素的计算器实现方法)
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (007)XHTML文档之标题——h1~h6
  • (11)MATLAB PCA+SVM 人脸识别
  • (MATLAB)第五章-矩阵运算
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (七)c52学习之旅-中断
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)u-boot-nand.bin的下载
  • (一)插入排序
  • (转)视频码率,帧率和分辨率的联系与区别
  • .Net core 6.0 升8.0
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)