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 ...
随机推荐
- CodeChef - COUNTARI Arithmetic Progressions (FFT)
题意:求一个序列中,有多少三元组$(i,j,k)i<j<k $ 满足\(A_i + A_k = 2*A_i\) 构成等差数列. https://www.cnblogs.com/xiuwen ...
- Winter-2-STL-A Argus 解题报告及测试数据
Time Limit:2000MS Memory Limit:65536KB Description A data stream is a real-time, continuous, ord ...
- Windows 配置安卓环境变量
变量名:JAVA_HOME 变量值:JDK 路径 变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar // ...
- [User Defaults] Failed to read values in CFPrefsPlistSource (iOS 10)
最近遇到一个bug,偶发,后来发现概率还挺高(10%). NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; ...
- Linux centos7安装Mongodb
Linux centos7安装Mongodb-4.0 1.下载 官方下载地址:https://www.mongodb.com/download-center/community 2.上传解压 1)rz ...
- c++ 跳转语句块
p170~p172:跳转语句:1.break:对while for switcho有效!2.continue:中断当前迭代,但是循环还要继续.因此对while for有效,对switch无效!3.go ...
- JS类、对象、方法、prototype、_proto_
案例代码: function People(name) { //对象属性 this.name = name; //对象方法 this.Introduce = function() { alert(&q ...
- innodb 行级锁
InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,In ...
- golang中文字符编码转换
golang 有很多需要将中文转成utf8的 网上搜到一个直接转的,记录下,备用 package main import "golang.org/x/text/encoding/simpli ...
- 20145322第一次JAVA实验报告
20145322第一周JAVA实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验名称:Java开发环境的熟悉(Linux + Eclipse) 实验日期:2016.04.08 实 ...