C++的异常捕获
听课笔记:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std; void fun()
{
throw ;//抛出整型异常值
}
void fun02()
{
throw "hello!";//抛出const char* 类型的字符串
} class MyException
{
public:
MyException(const char* str)
{
cout << "构造函数被调用!" << endl;
error = new char[strlen(str) + ];
strcpy(error, str);
}
MyException(const MyException& ex)
{
cout << "拷贝构造函数被调用!" << endl;
error = new char[strlen(ex.error) + ];
strcpy(error, ex.error);
}
MyException operator=(const MyException& ex)
{
cout << "拷贝赋值函数被调用!" << endl;
if (error == ex.error)
{
return *this;
}
delete error;
error = new char[strlen(ex.error) + ];
strcpy(error,ex.error);
error = new char[strlen(ex.error) + ];
strcpy(error, ex.error);
return *this;
}
void what()
{
cout << "捕获异常: " <<error<< endl;
}
~MyException()
{
cout << "析构函数被调用!" << endl;
if (error!=NULL)
{
delete[] error;
} }
private:
char* error;
}; void fun03()
{ //创建一个临时对象,有的老师叫做匿名对象,这将要调用普通构造函数
throw MyException("wrong!");//既然可以抛内建数据类型的变量(对象),那也可以抛自定义类型的对象
} void test01()
{
try
{
fun();
}
catch (int e)//接收整型异常值,接收数据类型和抛出数据类型要匹配
{
cout << "捕获异常: " <<e<< endl;//打印catch到的异常值
}
try //try中放进去你认为可能出错的代码
{
fun02();
}
catch (const char* str1)//捕获异常,参数类型和抛出的数据类型要一致
{
cout << "捕获异常: " << str1 << endl;
}
try
{
fun03();
}
catch (MyException e)//抛出的是个自定义对象,捕获的参数类型也要是一个同类型的对象
{//接收抛出的对象相当于做对象拷贝,这要调用拷贝构造函数
e.what();
}
} int main()
{
test01();
system("pause");
return ;
}
C++的异常捕获的更多相关文章
- .NET 基础 一步步 一幕幕[数组、集合、异常捕获]
数组.集合.异常捕获 数组: 一次性存储多个相同类型的变量. 一维数组: 语法: 数组类型[] 数组名=new 数组类型[数组长度]; 声明数组的语法: A.数据类型 [] 数组名称= new 数据类 ...
- MVC 好记星不如烂笔头之 ---> 全局异常捕获以及ACTION捕获
public class BaseController : Controller { /// <summary> /// Called after the action method is ...
- atitit.js浏览器环境下的全局异常捕获
atitit.js浏览器环境下的全局异常捕获 window.onerror = function(errorMessage, scriptURI, lineNumber) { var s= JSON. ...
- C#中的那些全局异常捕获
1.WPF全局捕获异常 public partial class App : Application { public App() { // 在异 ...
- Spring-MVC开发之全局异常捕获全面解读
异常,异常 我们一定要捕获一切该死的异常,宁可错杀一千也不能放过一个! 产品上线后的异常更要命,一定要屏蔽错误内容,以免暴露敏感信息! 在用Spring MVC开发WEB应用时捕获全局异常的方法基本有 ...
- JavaScript异常捕获
理论准备 ★ 异常捕获 △ 异常:当JavaScript引擎执行JavaScript代码时,发生了错误,导致程序停止运行: △ 异常抛出:当异常产生,并且这个异常生成一个错误信息: △ 异常捕获: ...
- SQLServer异常捕获
在SQLserver数据库中,如果有很多存储过程的时候,我们会使用动态SQL进行存储过程调用存储过程,这时候,很可能在某个环节就出错了,但是出错了我们很难去跟踪到出错的存储过程,此时我们就可以使用异常 ...
- Asp.Net MVC3(三)-MvcApp实现全局异常捕获
定义异常捕获类: [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMu ...
- iphone 异常捕获处理
iphone 异常捕获处理 1 void UncaughtExceptionHandler(NSException *exception) { 2 NSArray *arr = [exception ...
- iOS异常捕获
文章目录 一. 系统Crash 二. 处理signal 下面是一些信号说明 关键点注意 三. 实战 四. Crash Callstack分析 – 进⼀一步分析 五. demo地址 六. 参考文献 前言 ...
随机推荐
- 修改NameNode端口后,hive表查询报错
在进行使用hive查询表数据的时候,抛出异常 hive> select*from blackList;FAILED: SemanticException Unable to determine ...
- hive beeline 的server启动与连接
启动hiveServer2 启动beeline之后 连接 !connect jdbc:hive2://localhost:10000/default 启动的时候连接 /beeline -u jdbc: ...
- Hadoop2.6.0版本MapReudce示例之WordCount(二)
继<Hadoop2.6.0版本MapReudce示例之WordCount(一)>之后,我们继续看MapReduce的WordCount示例,看看如何监控作业运行或查看历史记录,以及作业运行 ...
- XtraBackup全备与增量备份
一.XtraBackup安装 下载地址:http://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.8/source/ 安装步骤: ===== ...
- 【Atheros】minstrel速率调整算法源码走读
先说几个辅助的宏,因为内核不支持浮点运算,当然还有实现需要,minstrel对很多浮点值做了缩放: /* scaled fraction values */ #define MINSTREL_SCAL ...
- 查看文档的后几行命令:tail
假如有一个文件test.txt,内容如下: [root@lee ~]# cat test.txt 这是第1行 这是第2行 这是第3行 这是第4行 这是第5行 这是第6行 这是第7行 这是第8行 这是第 ...
- C语言基础知识【程序结构】
C 程序结构1.C 程序主要包括以下部分:预处理器指令函数变量语句 & 表达式注释2.#include <stdio.h> int main(){ /* 我的第一个 C 程序 ...
- 安装Hadoop 1.1.2 (一 安装JDK)
1 下载jdk1.7 xxx .rpm 2 以Root权限登陆 3 修改文件权限 chmod +x jdk-7u25-linux-x64.rpm 4 安装 JDK rpm -ivh jdk-7u2 ...
- 如何正确对tomcat host进行配置
今天在对tomcat的host容器(即虚拟主机的配置)进行配置时,发现即使修改了host name的值(默认为localhost),但是仍无法访问web项目的问题(提示域名解析出错).只能使用默认的值 ...
- Solr6.5与mysql集成建立索引
首先在solrconfig.xml(我的是保存在/usr/local/tomcat/solrhome/mycore/conf/下)的<requestHandler name="/sel ...