异常的错误使用导致性能问题
2011-07-11 08:19
309 查看
错误案例
现象描述:String strValue = (String) source; try { return new Integer(strValue); } catch (Exception e) { try { return new Integer(strValue.trim()); } catch (Exception ex) { return new Integer(0); } }
粗体标出的代码是存在性能问题的。
错误分析
构造一个Exception性能开销比较大,异常抛出首先需要创建一个新的对象,其异常Throwable类中的构造函数调用名为fillInStackTrace()的本地方法,这个方法加锁以实现收集跟踪信息。正确用法
正确代码:异常应当仅用于有错误发生时,而不要控制业务流程。正确使用exception,在exception里面主要做些资源清理或者日志记录的操作。static Integer ZERO_INTEGER = Integer.valueOf(0); public Object convert(Object source) { String strValue = (String) source; if (strValue == null) { return ZERO_INTEGER; } strValue = strValue.trim(); if (strValue.length() == 0) { return ZERO_INTEGER; } Integer ret = null; try { ret = new Integer(strValue); } catch (NumberFormatException e) { ret = ZERO_INTEGER; } return ret; }
测试关注点
压力测试的评估,如果觉得压力测试有问题,及时向开发同学反映。相关文章推荐
- 对JavaEE的十大不当使用导致的性能问题
- 关于tomcat服务器部署,页面报404/500错误,myeclipse异常关闭 导致tomcat 6.0 无法重启 的问题
- 使用官方API解决Navigation侧滑导致的Navigationbar异常显示和隐藏的问题
- memcached jar 包 导入错误引起的异常,及使用中碰到的问题
- 如何避免mysql 主从同步中由于数据记录找不到和主键重复错误导致的同步异常问题
- beforePhase使用不当导致ADF应用性能问题
- Eclipse相关错误导致web项目发布异常问题原因分析及解决方案
- 使用28377S进行ADC采样时配置错误导致波形畸变问题
- 提高你的Java代码质量吧:多使用异常,把性能问题放一边
- 解决键盘模式(布局)的错误导致的部分键位失灵或异常(姑且这样描述问题吧)
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积
- linux下错误使用pthread_mutex_lock导致程序奔溃问题分析
- 网站性能-错误的sql语句导致的严重性能问题
- 在64位IIS下,网站使用32位COM组件导致“800a01ad” ActiveX component can't create object错误的问题(转载)
- 使用sem_t导致不能用gdb调试及线程非正常终止后message queue异常的问题
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
- java工程项目里,在一个包里面,不能出现同名的类名,这问题是刚接触java才会遇到的,特别是新手一般都没有建立包,而是使用默认的,易出现同名的类名,导致eclipse提示错误
- 使用nfs共享session文件导致 session_start异常缓慢问题
- IOS使用autoresizingMask导致控件大小异常问题解决
- 子网掩码错误导致通讯异常问题