【M15】了解异常处理(exception handling)的成本
1、为了在运行期处理异常,程序必须做大量额外的工作。比如,即使抛出异常,也必须保证离开作用域的栈上对象执行析构方法。因此,必须记录try语句的进入点和离开点,记录catch语句能够处理的异常等。这就意味着,程序目标码变大,执行速度慢。
2、即使从未使用任何异常处理,还是必须要付出最低代价,付出一些空间,放置某些数据结构,付出一些时间,保持数据结构的正确性。
3、即使自己的程序没有使用throw,try,catch语句,使用的其他程序库可能有异常处理,因此也要付出代价。
4、对于try语句,没有异常抛出的情况下,代码膨胀5%-10%,速度也下降这个数。
5、如果抛出异常,影响很大,速度可能会比正常情况下慢3个数量级。但是,抛出异常是罕见的,因此可以接受。这也就意味着,在相对正常的情况下,不要抛出异常。
6、考虑到异常对效率的影响,因此,在非用不可的情况下,才使用try语句。在确实是个异常的情况下,才抛出异常。
【M15】了解异常处理(exception handling)的成本的更多相关文章
- Akka(26): Stream:异常处理-Exception handling
		
akka-stream是基于Actor模式的,所以也继承了Actor模式的“坚韧性(resilient)”特点,在任何异常情况下都有某种整体统一的异常处理策略和具体实施方式.在akka-stream的 ...
 - Exception Handling Considered Harmful
		
异常处理被认为存在缺陷 Do, or do not. There is no try. - Yoda, The Empire Strikes Back (George Lucas) by Jason ...
 - 异常处理与MiniDump详解(3) SEH(Structured Exception Handling)
		
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 一. 综述 SEH--Structured Exception Handlin ...
 - Exception handling  异常处理的本质
		
异常处理的本质:状态回滚或者状态维护. https://en.wikipedia.org/wiki/Exception_handling In general, an exception breaks ...
 - C#编程.异常处理(Exception Handling Statements)
		
C#语言包含结构化异常处理(Structured Exception Handling,SEH). throw The throw statement is used to signal the oc ...
 - Exception Handling in ASP.NET Web API webapi异常处理
		
原文:http://www.asp.net/web-api/overview/error-handling/exception-handling This article describes erro ...
 - C# to IL 10 Exception Handling(异常处理)
		
Exception handling in IL is a big let down. We expected a significant amount of complexity,but were ...
 - Exception Handling引入MVP
		
异常处理(Exception Handling)是所有系统的最基本的基础操作之一,其它的比如日志(Logging).审核(Auditing).缓存(Caching).事务处理(Transaction) ...
 - Unity、Exception Handling引入MVP
		
什么是MVP?在“MVP初探”里就有讲过了,就是一种UI的架构模式. 简单的描述一下Unity和Exception Handling Application Block: Unity是一个轻量级的可扩 ...
 - 黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block
		
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block 使用企业库异常处理应用程序模块的 ...
 
随机推荐
- Mac下开发常用目录
			
1:Snippets Xcode 代码段的文件表示 ~/Library/Developer/Xcode/UserData/CodeSnippets/ 2: Services 可以添加workf ...
 - 《C++ Primer 4th》读书笔记 第8章-标准IO库
			
原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3936457.html
 - Oracle 课程一之Oracle体系结构
			
课程目标 •理解ORACLE数据库体系架构—内存结构和进程 •理解SQL在数据库中的运作流程 •理解UNDO&REDO原理 •理解commit原理 1.Oracle数据库概述 •数据库:物 ...
 - windows批处理中的%0 %1 %2 %3
			
原来就是参数的顺序.....倒...我还查了老半天
 - logback.xml_appender配置
			
logback<appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的组件. < ...
 - Storm的本地运行模式示例
			
以word count为例,本地化运行模式(不需要安装zookeeper.storm集群),maven工程, pom.xml文件如下: <project xmlns="http://m ...
 - UI特效--Android利用ViewFlipper实现屏幕切换动画效果
			
.屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面:一个个性化设置页面.2.介绍ViewFilpper类ViewFl ...
 - JS代码的简单重构与优化(适合新手)
			
Demo . 1 //bad if (age > 20) { return true; } else { return false; } //good return age > 20; 这 ...
 - SSH整合常见错误
			
spring+hibernate出错小结: (1)java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext ...
 - 发布 asp.net网站 到本地IIS
			
http://blog.csdn.net/jiben2qingshan/article/details/9249139 概述 网站是由一个个页面组成的,是万维网具体的变现形式,关于万维网,网页的方面的 ...