C++中的异常处理(三) 标签: c++C++异常处理 2012-11-24 23:00 1520人阅读 评论(0) 收藏 举报  分类: 编程常识(2)  版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   查看普通函数的声明的时候,不可能知道该函数会抛出什么异常,但是在捕获异常的时候要知道一个函数会抛出什么样的异常,以便捕获异常. 异常说明:指定,如果函数抛出异常,抛出的异常将是包含在该说明中的一种,或者是从列出的异常中派生的类型. 1.定义异常说明 异常说明跟在…
先看下面的代码: [cpp] view plaincopy int main() { int *i=new int(10); /* 这中间的代码出现异常 */ delete i; return 0; } 如果出现了这样的情况,动态分配的内存就不会被释放.为了处理这样的问题,可以使用C++标准库auto_ptr类. 如果使用下面的代码,内存就一定会被释放 [cpp] view plaincopy #include<memory> int main() { std::auto_ptr<int…
1.异常是通过抛出对象而引发的.该对象的类型决定应该激活哪个处理代码.被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那个. 2.执行throw的时候,不会执行跟在throw后面的语句,而是将控制从throw转移到匹配的catch,该catch可以是同一函数中局部的catch,也可以在直接或间接调用发生异常的函数的另一个函数中.控制从一个地方传到另一地方,这有两个重要含义:  (1)沿着调用链的函数提早退出.  (2)一般而言,在处理异常的时候,抛出异常的块中的局部存储不存在了.…
查看普通函数的声明的时候,不可能知道该函数会抛出什么异常,但是在捕获异常的时候要知道一个函数会抛出什么样的异常,以便捕获异常. 异常说明:指定,如果函数抛出异常,抛出的异常将是包含在该说明中的一种,或者是从列出的异常中派生的类型. 1.定义异常说明 异常说明跟在形参表后.一个异常说明在关键字throw之后跟着一个由圆括号括住的形参列表,该列表可能为空或者多个,若为多个,则用逗号分开.例如: void getWork() throw(runime_error);                  …
异常就是运行时出现的不正常,例如运行时耗尽了内存或遇到意外的非法输入.异常存在于程序的正常功能之外,并要求程序立即处理.不能不处理异常,异常是足够重要的,使程序不能继续正常执行的事件.如果找不到匹配的catch,程序就调用库函数terminate. 如果不处理异常将会出现上图的效果.下面是处理异常的代码: [cpp] view plaincopy #include<iostream> using namespace std; int main() { try { int a=3,b=0; in…
C++ Primer 第三章 标准库类型 3.1using声明 例: using namespace atd; using std::cin; 3.2string类型 初始化方式 string s1 默认构造函数,s1为空串 string s2(s1) 将s2初始化为s1的一个副本 string s3(“value”) 将s3初始化为一个字符串的副本 string s4(n, 'c') 将s4初始化为字符'c'的n个副本 getline读取整行文本 getline接受两个参数:一个是输入流对象和…
异常处理方式一. @ExceptionHandler 异常处理方式二. 实现HandlerExceptionResolver接口 异常处理方式三. @ControllerAdvice+@ExceptionHandler 三种方式比较说明(强烈推荐各位看一下,我觉得自己总结的比较多,嘿嘿,不对之处请指出,点我快速前往!) 问题描述: 假如对异常不进行处理? 假如SpringMvc我们不对异常进行任何处理, 界面上显示的是这样的. 异常处理的方式有三种: 一. Controller层面上异常处理 @…
第三章主要介绍了C++中标准库类型.主要讲到string和vector类型.在string类型中,能够很方便的操作字符串,应该要注意的地方就是它的字符串中元素的位置的类型是:size_type类型的数据,其中主要涉及到如何访问每一个字符串的字符:(下标法)for(string::size_type ix=0:ix!=s.size():++ix){}.(迭代器法)for(string::iterator iter=s.begin();iter!=s.end();++iter){}. 在vector…
习题3.2 什么是默认构造函数? 解答: 默认构造函数就是在没有显示提供初始化式时调用的构造函数.它由不带参数的构造函数,或者为所有形参提供默认实参的构造函数定义.如果定义某个类的变量时没有提供初始化式,就会使用默认构造函数. 如果用户定义的类中没有显示定义任何构造函数,编译器就会自动为该类生成默认构造函数,称为合成的默认构造函数. 习题3.3 列举出三种初始化string对象的方法. 解答: 不带初始化式,使用默认构造函数初始化string对象. 使用给一个已存在的string对象作为初始化式…
1.异常处理类 package second; public class MyException extends Exception { MyException (){ } MyException (String ErrorMsg){ super(ErrorMsg); } public void check(){ System.out.println("都报错了,还处理个毛线!"); } } 2.程序 package second; public class ScoreCount {…