Java复习6异常处理
Java复习6.异常处理 20131005
前言:
Java中的异常处理机制是非常强大的,相比C++ 来说,更加系统。但是我们开发人员没有很好的使用这一点。一些小的程序是没有什么问题的,但是对于大型项目来说,异常处理机制十分重要。在Java中我们使用的异常处理,一般就是捕获异常,输出堆栈中的异常信息,就没了,这些方法仅仅适合开发环节,便于我们调试错误,但是对于后期发布上下的话,这些就没有用了,需要我们恢复错误等等,甚至要重新启动。
本章的就学习一段代码,通过它来学习Java中的异常处理机制。
Connection conn = null;
OutputStreamWriter out = null;
try{
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("select uid,name from user");
while(rs.next()){
out.write("ID:" + rs.getString("uid") + ",name" + rs.getString("name"));
}
conn.close();
out.close();
}catch(Exception e){
e.printStackTrace();
}
这一段代码的优化分析有六处不好的地方:
1.异常丢弃
e.printStackTrace(); 这里捕获了异常,但是没有做任何处理,就是相当于丢弃异常,虽然这样可以便于我们调试程序,单丝当程序调试阶段结束之后,就没有什么作用了。我们捕获了异常但是不处理,降低了程序的健壮性。
2.不指定确切的异常类型
Exception e 这里会将所有的类型的异常都会捕获掉,我们无法确定异常的类型,也就无法处理异常了,这里可能是SQLException,也可能是IOException。
3.占用资源不释放
当抛出异常的时候,我们的连接conn是没有关闭的,这样会造成资源的而浪费,我们在catch最后面应该加上finally,关闭掉conn数据库连接。
4不说明异常的详细信息
e.printStackTrace();这里是指简单的打印异常的堆栈信息,应当适当的提供异常的错误信息,便于寻找错误和调试。
5.庞大的Try代码块
庞大的try代码块,这样可能在其中产生各种异常,我们不容易找错误的那一段代码,而且可能我们捕获的异常不是我们想要的,而是自己编写代码是产生了其他的错误,抛出的其他的异常。所以我们呢应该尽量减少catch的大小。
6.数据输出不完整
不完整的数据输出问题,在程序的输出的时候,我们取出一条数据,然后输出一条数据,这样造成大量的IO开销,同时也可能在输出数据的时候发生错误,所以建议将所有要输出的数据缓冲起来,最后一次性输出。
修改程序:
Connection conn = null;
OutputStreamWriter out = null;
try{
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("select uid,name from user");
while(rs.next()){
out.write("ID:" + rs.getString("uid") + ",name" + rs.getString("name"));
}
}catch(SQLException e){
//out.write("Waring: 数据不完整");
//throw new ApplicationException();
}catch(IOException e){
//out.write("Waring: 写入数据的时候出错");
}finally{
if(conn != null){
try{
conn.close();
}catch(SQLException e){
System.err.println("cannot close the database connection" +e.toString());
}
}
if(out !=null ){
try{
out.close();
}catch(IOException ioe){
System.err.println("cannot close the outputstream " + ioe.toString());
}
}
}
Java复习6异常处理的更多相关文章
- java复习(6)---异常处理
JAVA异常处理知识点及可运行实例 接着复习java知识点,异常处理是工程中非常重要的. 1.处理异常语句: try{ .... }catch(Exception e){ ..... } finall ...
- 第11章 Java异常与异常处理
1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...
- JAVA动手动脑异常处理
1>请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. import javax.swing.*; class AboutEx ...
- Java Socket常见异常处理 和 网络编程需要注意的问题
在java网络编程Socket通信中,通常会遇到以下异常情况: 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发 ...
- Java中实现异常处理的基础知识
Java中实现异常处理的基础知识 异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况.许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象. 例如:数组越界和被0除. ...
- java 复习003 之排序篇
由java 复习003跳转过来的C语言实现版见some-sort-algorithms 快速排序(不稳定 O(n log n)) package vell.bibi.sort_algorithms; ...
- java 复习001
java 复习001 比较随意的记录下我的java复习笔记 ArrayList 内存扩展方法 分配一片更大的内存空间,复制原有的数据到新的内存中,让引用指向新的内存地址 ArrayList在内存不够时 ...
- java 中的异常处理
一. 异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误.本文主要讲授的是Java语言的异常处理.Java语言的异常处理框架, 是Java语言健壮性的一个重要体现. Java把 ...
- Java进阶02 异常处理
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/09/3000894.html 作者:Vamei 出处:http://www.cnblogs.com ...
随机推荐
- 论文笔记:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
ICML, 2015 S. Ioffe and C. Szegedy 解决什么问题(What) 分布不一致导致训练慢:每一层的分布会受到前层的影响,当前层分布发生变化时,后层网络需要去适应这个分布,训 ...
- Webpack+React+ES6 最新环境搭建和配置(2017年)
刚刚学习React,发现React在ES6下的语法才是本体,结合ES6新的语言特性,使组件化开发显得更加直观.而且现在的Angular2也开始使用支持强类型的TypeScript,转译(transpi ...
- linux 用到的命令
1. cd / 直接到服务器根目录 2. pwd 查看 当前所在目录 3. ll 查看当前文件下文件列表 4.ls 查看当前文件下文件,横向排列 5.ps -ef | gre ...
- firewall 防火墙相关
修改配置文件: /etc/sysconfig/network-scripts/ifcfg-ens33 文件 ONBOOT=no 改为yes 然后重启 service network restart ...
- oracle导入时报错
之前在oracle数据库中新建了一个表空间和用户,在新建的用户下导入".dmp"文件是出现了这个错误. 解决方法: 使用管理员登陆进去,创建一个对应的表空间和用户,就OK了. (表 ...
- JavScript 日期格式化
JavScript 日期格式化 //日期格式化 function formatDate(date,fmt) { if(date == null || typeof (date) == undefine ...
- 在linux环境下安装python3.6
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz --no-check-certificat gunzip Python-3. ...
- 【读书笔记】《深入浅出nodejs》第四章 异步编程
1. 异步编程的基础 -- 函数式编程 (1)高阶函数 -- 是可以把函数作为参数,或是将函数作为返回值的函数. (2)偏函数用法 -- 创建一个调用另外一个部分 -- 参数或变量已经预置的函数 -- ...
- spring cron表达式及解析过程
1.cron表达式 cron表达式是用来配置spring定时任务执行时间的字符串,由5个空格分隔成的6个域构成,格式如下: {秒} {分} {时} {日} {月} {周} 每一个域的含义解释 ...
- Package Manager Console的使用
Find-Package PM> Find-Package autofac https://docs.microsoft.com/en-us/nuget/tools/ps-ref-find-pa ...