当前位置:文档之家› Java学习总结之第八章 异常处理

Java学习总结之第八章 异常处理

Java学习总结之第八章 异常处理
Java学习总结之第八章 异常处理

Java学习总结之第八章异常处理

一、Java异常处理机制概述

1、Java虚拟机用方法调用栈来跟踪每个线程中一系列的方法调用过程。

2、方法中的代码块可能抛出异常,有如下两种处理办法:

l 在当前方法中通过try…catch语句捕获并处理异常。例如:

public void methodA(int money){

try{

//以下代码可能会抛出SpecialException

if(--money <= 0)

throw new SpecialException("Out of money");

}

catch(SpecialException e){

//异常处理

}

}

l 在方法的声明处通过throws语句声明抛出异常,返回给调用者来处理异常例如:

由于方法A不能捕获异常,所以,A就要通过throws语句声明抛出异常,由调用者methodB()来处理异常

public void methodA(int money)throws SpecialException{

//以下代码会抛出SpecialException

if(--money <= 0)

throw new SpecialException("Out of money");

}

此时methodB()的定义如下:

public void methodB(int money){

try{

methodA(money);

}

catch(SpecialException e){

//处理异常

}

}

如果methodB()也没有捕获SpecialException,而是声明抛出该异常,则Java虚拟机的处理流程将退回到methodB()方法的调用者,此时methonB()方法的定义如下:

public void methodB(int money)throws SpecialException{

methodA(money);

}

3、当Java虚拟机追溯到调用栈的底部的方法时,如果仍然没有找到处理该异常的代码块,将按以下步骤处理:

l 调用异常对象的printStackTrace()方法,打印来自方法调用栈的异常信息。

l 如果该线程不是主线程,那么终止这个线程,其他线程继续正常运行。如果该线程是主线程(即方法调用栈的底部为main()方法),那么整个应用程序被终止。

二、运用Java异常处理机制

1、在Java语言中,用try…catch语句来捕获异常,格式如下:

try{

//可能会出现异常的代码

}

catch(SQLException e){

//处理操纵数据库出现的异常

}

catch(IOException e){

//处理操纵输入流和输出流出现的异常

}

2、finally语句中的代码是在异常处理的任何情况下都必须执行的代码。finally代码块能保证特定的操作总是会被执行,它的形式如下:

try{

//可能会出现异常的代码

}

catch(Exception e){

//处理异常

}

finally{

//特定的操作

}

3、不管try代码块中是否出现异常,都会执行finally代码块。

4、如果一个可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。一个方法可能会出现多种异常,throws子句允许声明抛出多个异常,例如:

public void method()throws SQLException,IOException{…}

5、throw语句用于抛出异常,由throw语句抛出的对象必须是https://www.doczj.com/doc/4610690594.html,ng.Throwable类或者其子类的实例。

6、异常处理语句的语法规则:

l try代码块不能脱离catch代码块或finally代码块而单独存在。try代码块后面至少有一个catch代码块或finally代码块。

l try代码块后面可以有零个或多个catch代码块,还可以有零个或至多一个finally代码块。如果catch 代码块和finally代码块并在,finally代码块必须在catch代码块后面。

l try代码块后面可以只跟finally代码块。

l 在try代码块中定义的变量的作用域为try代码块,在catch代码块和finally代码块中不能访问该变量。

l 当try代码块后面有多个catch代码块时,Java虚拟机会把实际抛出的异常对象依次和各个catch代码块声明的异常类型匹配,如果异常对象为某个异常类型或其子类的实例,就执行这个catch代码块,而不会再执行其他的catch代码块。

l 如果一个检查异常,要么用try…catch语句捕获,要么用throws语句声明将它抛出,否则会导致编译错误。

l throws语句后面不允许紧跟其他语句,因为这些语句永远不会被执行。

7、异常流程的运行过程:

l finally语句不会被执行的惟一情况是先执行了用于终止程序的System.exit()方法。exit()方法的定义如下:public static void exit(int status) ,exit()方法的参数status表示程序终止时的状态码,按照编程惯例,0表示正常终止,非零数字表示异常终止。

l return语句用于退出本方法。在执行try或catch代码块中的return语句时,假如有finally代码块,会先执行finally代码块。

l finally代码块虽然在return语句之前被执行,但finally代码块不能通过重新给变量赋值的方式来改变return语句的返回值。

l 建议不要在finally代码块中使用return语句,因为它会导致两种潜在的错误。第一种错误是覆盖try 或catch代码块的return语句,第二种错误是丢失异常。

三、Java异常类

1、所有异常类的祖先类为https://www.doczj.com/doc/4610690594.html,ng.Throwable类,它的实例表示具体的异常对象,可以通过throw语句抛出,Throwable类提供了访问异常信息的一些方法,常用的方法包括:

l getMessage()——返回String类型的异常信息。

l printStackTrace()——打印跟踪方法调用栈而获得的详细异常信息。在程序调试阶段,此方法可用于跟踪错误。

2、常见的运行时异常包括:NullPointerException、ClassCastException、ArithmeticException、IllegalArgumentException和IndexOutOfBoundsException,这种异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常时,即使没有用try…catch语句捕获它,也没有用throws子句声明它,还是会通过编译。

四、用户定义异常

1、异常转译

当位于最上层的子系统不需要关心来自底层的异常的细节时,常见的做法是捕获原始的异常,把它转换为一个新的不同类型的异常,再抛出新的异常,这种处理异常的办法称为异常转译。示例代码如下:

public void uploadImageFile(String imagePath)throws UpLoadException{

try{

//上传图像

}catch(IOException e){

//把原始异常信息记录到日志中,便于排错

throw new UpLoadException();

}catch(SQLException e){

//把原始异常信息记录到日志中,便于排错

throw new UpLoadException();

}

}

2、异常链

JDK1.4以上版本中的Throwable类支持异常链机制。所谓异常链就是把原始异常包装为新的异常类,也就是说在新的异常类中封装了原始异常类,这有助于查找产生异常的根本原因。如果使用JDK1.4以下的版本,可以由开发者自行设计支持异常链的异常类,以下示例代码提供了一种实现方案,JDK1.4以上版本中的Throwable类的实现机制与它很相似。

import java.io.*;

public class BaseException extends Exception{

protected Throwable cause = null;

public BaseException(){}

public BaseException(String msg){super(msg);}

public BaseException(Throwable cause){

this.cause = cause;

}

public BaseException(String msg,Throwable cause){

super(msg);

this.cause = cause;

}

public Throwable initCause(Throwable cause){

this.cause = cause;

return this;

}

public Throwable getCause(){

return cause;

}

public void printStackTrace(){

printStackTrace(System.err);

}

public void printStackTrace(PrintStream outStream){

printStackTrace(new PrintWriter(outStream));

}

public void printStackTrace(PrintWriter writer){

super.printStackTrace(writer);

if(getCause() != null){

getCause().printStackTrace(writer);

}

writer.flush();

}

}

在BaseException中定义了Throwable类型的cause变量,它用于保存原始的Java异常。假定UploadException类扩展了BaseException类:

public class UploadException extends BaseException{

public UploadException(Throwable cause){super(cause);}

public UploadException(String msg){super(msg);}

}

以下是把IOException包装为UploadException的代码。

try{

//上传图像文件

}catch(IOException e){

//把原始异常信息记录到日志中,便于排错

//把异常类包装为UploadException

UploadException ue = new UploadException(e);

throw ue;

}

3、处理多样化异常

Java方法中一次只能抛出一个异常对象,如果需要抛出多个异常,开发者必须自行设计支持多样化异常的异常类,以下为一种实现方案的示例代码:

import java.util.List;

import java.util.ArrayList;

import java.io.PrintStream;

import java.io.PrintWriter;

public class BaseException extends Exception{

protected Throwable cause = null;

private List exceptions = new ArrayList();

public BaseException(){}

public BaseException(String msg){super(msg);}

public BaseException( Throwable cause ) {

this.cause = cause;

}

public BaseException(String msg,Throwable cause){

super(msg);

this.cause = cause;

}

public List getExceptions() {

return exceptions;

}

public void addException( BaseException ex ){

exceptions.add( ex );

}

public Throwable initCause(Throwable cause) {

this.cause = cause;

return this;

public Throwable getCause() {

return cause;

}

public void printStackTrace() {

printStackTrace(System.err);

}

public void printStackTrace(PrintStream outStream) {

printStackTrace(new PrintWriter(outStream));

}

public void printStackTrace(PrintWriter writer) {

super.printStackTrace(writer);

if ( getCause() != null ) {

getCause().printStackTrace(writer);

}

writer.flush();

}

}

BaseException类包含了一个List类型的excepti ons变量,用来存放其他的Exception。以下代码显示了BaseException的用法。

public void check()throws BaseException{

BaseException be = new BaseException();

try{

checkField1();

}catch(Field1Exception e){

be.addExcepti on(e);

}

try{

checkField2();

}catch(Field2Exception e){

be.addExcepti on(e)

}

if(be.getExceptions().size() > 0)

throw be;

}

五、异常处理原则

1、异常处理只能用于非正常情况。

2、为异常提供说明文档。通过JavaDoc的@throws标签来描述产生异常的条件。

3、尽可能地避免异常。

4、保持异常的原子性。异常的原子性是指当异常发生时后,各个对象的状态能够恢复到异常发生前的初始状态,而不至于停留在某个不合理的中间状态。保持原子性有以下办法:

l 最常见的办法是先检查方法的参数是否有效,确保当异常发生时还没有改变对象的初始状态。

l 编写一段恢复代码,由它来解释操作过程中发生的失败,并且使对象状态回滚到初始状态。这种办法不是很常用,主要用于永久性的数据结构,比如数据库系统的回滚机制就采用了这种办法。

l 在对象的临时拷贝上进行操作,当操作成功后,把临时拷贝中的内容复制到原来的对象中。

5、避免过于庞大的try代码块。

6、在catch子句中指定具体的异常类型

7、不要在catch代码块中忽略被捕获的异常。

Java语言提供两种异常处理机制

得到一个异常对象是,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。捕获异常是通过try-catch-finally语句实现的。语法为:try{ ... }catch(ExceptionName1 e){ ... }catch(ExceptionName2 e){ ... } ... }finally{ ... } 2)声明抛弃异常:当Java 程序运行时系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃异常。声明抛弃异常是在一个方法声明中的throws子句中指明的。如:public int read() throws IOException{ ... } 其中throws IOException就是声明抛弃异常,throws后可以跟多个异常类型。 1. https://www.doczj.com/doc/4610690594.html,ng.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话) 2. https://www.doczj.com/doc/4610690594.html,ng.classnotfoundexception 这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。 3. https://www.doczj.com/doc/4610690594.html,ng.arithmeticexception 这个异常的 好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。 4. 是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。 5. https://www.doczj.com/doc/4610690594.html,ng.illegalargumentexception 这个异常的解释是"方法的参数错误",很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。 6. https://www.doczj.com/doc/4610690594.html,ng.illegalaccessexception 这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部说明,在api里都可以查阅。算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException 操作数据库异常:SQLException 输入输出异常:IOException 方法未找到异常:NoSuchMethodException https://www.doczj.com/doc/4610690594.html,ng.AbstractMethodError 抽象方法错误。当应用试图调用抽象方法时抛出。https://www.doczj.com/doc/4610690594.html,ng.AssertionError 断言错。用来指示一个断言失败的情况。https://www.doczj.com/doc/4610690594.html,ng.ClassCircularityError 类循环依赖错误。在初始化一个类时, 个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。https://www.doczj.com/doc/4610690594.html,ng.Error 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。https://www.doczj.com/doc/4610690594.html,ng.ExceptionInInitializerError 初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异

java开发实习心得体会

四川实习心得体会 计算本一班01210251y33 张焕炎 大四初始,我已经闻到了离别的气息,在这即将远离大学时代的时刻,才真正懂得回眸的意义。想想走过的路,想想现在的路,想想来时的路,不知道未来能否成功,既然选择了远方,就注定要风雨兼程! 在四川短暂的一个月里,我从基础入手,强化了java语言编程,学习了java 语言编程和编程概念与技巧。时间很短,但成长很快,无论是理论知识还是动手实践能力都得到了大幅度的提高。而将理论和实践相结合,相互促进,相互补充,使得学习更加透彻。通过用不同方法实现同一个项目,不断深入,层层推进,学以致用! 实践过程中,开发一个简单的小项目,包括如何将Java的思想运用到实际系统的详细设计之中。首先要将系统要实现的功能分为几大模块,然后每个分别完成,在此过程中使我加深了对Java的理解,以及如何进行工作的划分,与此同时熟练掌握Java语言的编辑,编译,调试程序,并将算法转变为程序实现。我将设计过程分为逻辑设计和详细设计两个步骤实现.逻辑设计指的是,对问题描述中涉及的对象定义相应的数据类型,定义主程序模块和各抽象数据类型及其代码;详细设计则为定义相应的模块的实现并写出各模块的实现代码。然后在连接数据库,编码测试,最后确定完成。 通过这次实践,使我灵活应用所学知识,独立完成问题分析,结合Java理论知识,编写程序解决指定问题。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力。同时在这次实践中,培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。然而,在这次实践中,我觉得一个人完成一个项目是多么的艰难,在一些大型的项目中,团队合作是多么重要。尽管这次只是一个小项目,却也要耗费大量的精力。我学习了知识,也培养了实践能力,让我知道遇到一个问题,如何去寻找思路,如何去解决问题,最终完成整个事情。学习的过程中不可避免的遇到问题,这些问题有的只是一个符号错了,一个括号少了,这类的问题在他的文档,或者一般的网站上就能够找到,尤其是初学者的问题,不会是很难的问题,在你之前已经无数人问过了,不要害怕提问,但

java异常处理例题代码

App9_1.java:输出一个数组的所有元素,捕获数组下标越界异常和除娄为0异常。public class App9_1{ public static void main(String args[]){ int i; int[] a={1,2,3,4}; for(i=0;i<5;i++) System.out.println(" a["+i+"]="+a[i]); System.out.println("5/0"+(5/0)); } } App9_2.java:使用try-catch-finall语句对程序中的异常进行捕获与处理。 public class App9_2{ public static void main(String args[]){ int i; int a[]={1,2,3,4}; for (i=0;i<5;i++){ try{ System.out.print("a["+i+"]/"+i+"="+(a[i]/i)); } catch(ArrayIndexOutOfBoundsException e){ System.out.print("捕获到了数组下标越界异常"); } catch(ArithmeticException e){ System.out.print("异常类名称是:"+e); //显示异常信息 } catch(Exception e){ System.out.println("捕获"+e.getMessage()+"异常!"); //显示异常信息 } finally{ System.out.println(" finally i="+i); } } System.out.println("继续!!"); } } App9_3.java:使用throw语句在方法中抛出异常。 public class App9_3{ public static void main(String args[]){ int a=5,b=0; try{ if (b==0) throw new ArithmeticException(); //抛出异常,不是必须的 else System.out.println(a+"/"+b+"="+a/b); //若不抛出异常,则运行此行

程序设计异常处理机制

异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦!Java 语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链机制,从而便于跟踪异常!这是Java语言设计者的高明之处,也是Java语言中的一个难点,下面是我对Java异常知识的一个总结,也算是资源回收一下。 一、Java异常的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误https://www.doczj.com/doc/4610690594.html,ng.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出https://www.doczj.com/doc/4610690594.html,ng.ArithmeticException的异常。 有些异常需要做处理,有些则不需要捕获处理,后面会详细讲到。 天有不测风云,人有旦夕祸福,Java的程序代码也如此。在编程过程中,首先应当尽可能去避免错误和异常发生,对于不可避免、不可预测的情况则在考虑异常发生时如何处理。Java中的异常用对象来表示。Java对异常的处理是按异常分类处理的,不同异常有不同的分类,每种异常都对应一个类型(class),每个异常都对应一个异常(类的)对象。 异常类从哪里来?有两个来源,一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。Exception 类及其子类是Throwable的一种形式,它指出了合理的应用程序想要捕获的条件。 异常的对象从哪里来呢?有两个来源,一是Java运行时环境自动抛出系统生成的异常,而不管你是否愿意捕获和处理,它总要被抛出!比如除数为0的异常。二是程序员自己抛出的异常,这个异常可以是程序员自己定义的,也可以是Java语言中定义的,用throw 关键字抛出异常,这种异常常用来向调用者汇报异常的一些信息。 异常是针对方法来说的,抛出、声明抛出、捕获和处理异常都是在方法中进行的。 Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。finally语句块会在方法执行return之前执行,一般结构如下: try{ 程序代码 }catch(异常类型1 异常的变量名1){ 程序代码 }catch(异常类型2 异常的变量名2){ 程序代码 }finally{ 程序代码 } catch语句可以有多个,用来匹配多个异常,匹配上多个中一个后,执行catch语句块时候仅仅执行匹配上的异常。catch的类型是Java语言中定义的或者程序员自己定义的,表示代

【心得体会范文】java实验心得体会精选

java实验心得体会精选 java实验心得体会一:软件专业java实习心得 大学生活临近了尾声,这短短的三年,却是我的人生中弥足珍贵 的时光。在这三年里,我从一个莽撞少年成长为一名合格的大学生, 用脱胎换骨来形容并不为过。总结过去可以拨开时间的迷雾,清晰的 回首所走过的路,从而为将来的人生旅程准备一些经验和教训。 大学生活主线是学习。大学学习是迥然不同于以往的一种新形式,它赋予了学习者更大的自主性和更广阔的思维空间,同时也对学习者 提出了更高的要求。在这种半开放式的教学模式下,要求学习者必须 有明确的学习目的,有更强的选择辨别能力和更强的自学能力。对于 这个方面,我应该感谢大学这四年的学习生涯,在这期间的历次挫折 与成功,使我真正知道了怎样进行自我学习,怎样有选择有目的的学习,随之而来的是自己自学能力和学习效率的提高。而学习之外的课 外科技活动的参与,同时也是对所学知识的一种巩固和加强,它不仅 提高了我的动手能力,拓宽了我的知识面,而且在不断的探索过程中,也促使自己学习更多更新的东西,这更进一步丰富了自己的理论知识。 通过此次实习,让我学到了很多课堂上更本学不到的东西,仿佛 自己一下子成熟了,懂得了做人做事的道理,也懂得了学习的意义, 时间的宝贵,人生的真谛。明白人世间一生不可能都是一帆风顺的, 只要勇敢去面对人生中的每个驿站!这让我清楚地感到了自己肩上的 重任,看清了自己的人生方向,也让我认识到了文秘工作应支持仔细 认真的工作态度,要有一种平和的心态和不耻下问的精神,不管遇到 什么事都要总代表地去思考,多听别人的建议,不要太过急燥,要对 自己所做事去负责,不要轻易的去承诺,承诺了就要努力去兑现。单 位也培养了我的实际动手能力,增加了实际的操作经验,对实际的文 秘工作的有了一个新的开始,更好地为我们今后的工作积累经验。

JAVA实验四异常处理

实验四异常处理 实验目的 1、掌握异常的概念和Java 异常处理机制。 2、掌握异常的定义、抛出和捕捉处理。 实验内容与要求 1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 import java.io.*; public class Ch31 { public static void main(String args[])throws IOException { int[] ko=new int[15]; int n,a; String x; BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter an integer:"); x=keyin.readLine(); n=Integer.parseInt(x); try { a=110/n; ko[15]=100; System.out.println("此描述无法执行!"); } catch(ArithmeticException e){ System.out.println("除数为0的错误"); } catch(ArrayIndexOutOfBoundsException f) { System.out.println("数组索引值大于数组长度的错误!"); } System.out.println("执行完catch的描述!!!"); } } 2.运行下面的程序,自己给出程序的运行结果。 import java.io.*; public class Ch32{ public Ch32(){ try{ int a[] = new int[2]; a[4] = 3; System.out.println("After handling exception return here?"); }catch(IndexOutOfBoundsException e){ System.err.println("exception msg:" + e.getMessage()); System.err.println("exception string:" + e.toString()); e.printStackTrace(); }finally{

JAVAWEB实训心得体会

jsp+servlet+mysql 论坛项目实训总结 实训人:程路峰学号: 11103303 通过为期 10 天的实训,我学习了很多关于 java web 的知识。在老师的正确指导下,顺利的完成了我的实训内容。在此,也有同学的帮助,在他们的帮助下我也受益匪浅。最终,能顺利完成实训的任务也很高兴。 在实训生活中,我了解开发项目的需求、设计、实现、确认以及维护等活动整个过程,让自己开始懂得一点软件工程的知识点。 首先,了解需求分析的重要性,比如:需求分析就是分析软件用户的需求是什么.如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,最后却不满足用户的要求, 从而要重新开发过,这种返工是让人痛心疾首的.(相信大家都有体会)比如,用户需要一个 for linux 的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发 for windows 的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,恨不得找块豆腐一头撞死。所以,需求分析是成功的第一步,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求。 然后呢?确实客户的需求的以后我们要做什么呢,那当然是设计和分析。此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。 接下来是代码实现,此阶段是将网站项目设计的结果转换成计算机可运行的程序代码,我们这个项目为 4 个模块,1.界面,2.逻辑层。3 实现层。4.数据库及使用说明文档,分别为4 个小组成员完成。这阶段我学到很多编程的思想,如: 分层思想、mvc、三大架构的整合、dao 的编写。 编号程序之后就是软件测试了,此时在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。由于时间有限,我们测试是简单的使用一下每一个功能。 在编写代码时,由于自己技术知识水平不广,常常遇到技术难题;还有自己没有良好的编程习惯,不注释,有时连自己也看懵了;编程的结构不好,维修和修改代码是很慢。这次实训让我意识到了自己做为计算机软件工程专业的学生,要想在以后的职业中崭露头角,除了要有过硬的理论知识,健康的体魄外,还必须具备良好的心理素质,使自己在以后的途中无论经历什么样的困难,都立于不败之地。“纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,让我深深的感觉到自己在实际应用中所学专业知识的匮乏。让我真真领悟到“学无止境” 这句话的涵义。而所学的,都是课本上没有而对我们又非常实用的东西,这又给我们的实训增加了浓墨淡采的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。 在这次实训中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每个成员的意见,使我们的组合达到更加完美。实训过程中,除了要专业知识,包括人际交往,沟通方式及相关礼节方面的内容,对于团队开发来说,团结一致使我深有体会。团队的合作 注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具体实践中,不仅加深我对理论的掌握和运用,还让我拥有了一次又一次难忘的开发经历,这也是实训最大的收获。

第九章-Java异常处理练习Word版

第九章异常 在Java应用程序中,异常处理是保证程序正常、可靠运行的一个重要方面,在前边已经遇到了简单的异常处理。本章实验将主要针对程序中常用的异常的处理及异常的应用。 9.1 实验一:异常处理及应用 实验目的 (1). 了解异常的基本概念、异常的的产生和异常处理的过程。 (2). 基本掌握异常在应用程序中的应用。 实验要求 编写应用程序,在程序中对常见的异常进行捕捉并作相应的处理。 实验内容 实验示例9.1.1 在上一章8.2.1的实验示例测试中,若没有输入答案或输入非数字字符,则在处理过程中会出现数据格式异常,修改实验示例8.2.1创建的Exercises类,添加捕获并处理异常的程序代码。 实现该示例的步骤如下: ⑴简要分析 根据题意,首先需要确定会产生异常的程序段,然后使用try~catch结构进行捕捉和处理异常地处理。由于主要处理数据格式异常,它由输入时的错误引起,所以,在处理异常时,就是返回到输入处,重新输入数据。 ⑵根据上述简要分析,给出如下修改后的参考程序代码(Exercise.java): /*这是一个小学生综合训练题测试的应用程序 *程序的名称:Exercise.java *程序中捕捉处理数据格式异常(NumberFormatException) */ import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class Exercises extends StudentScreen implements ActionListener,KeyListener { int count = 0; int n1=0,n2=0; int total=0; int right=0; long timenum=0; Random rand=new Random();

JAVA实验报告心得

北京联合大学信息学院 “面向对象程序设计”课 程上机实验报告 题目: java上机实验心得体会 姓名(学号):专业:计算机科学与技术 编制时间: 2012年12月19日 版本:指导教师:北京联合大学-信息学院编制 实验1 熟悉java运行环境 实验目的:熟悉jdk环境和操作,编写简单的java应用程序。 心得体会:在该实验中,我碰到的问题是jdk环境变量的设置。解决方法是通过查阅资料书和网上搜索相关解决方法及同学的有力帮助。 实验2 选择语句练习 实验目的:正确理解并能够熟练操作和使用java的if和switch语句。 心得体会:我个人感觉有了c的编程基础,if和switch这些简单的流程控制语句运用起来比较轻松,实现简单的逻辑运算也跟c非常相近,所以上手比较快。但是在这次程序中,首次涉及到了java程序的数据输入,与c区别很大。但经过老师的讲解和查阅相关资料,基本明白相关的使用规则和注意事项。在第二个小题中还涉及到了charat()方法,经查阅jdk 文档,知道charat()方法返回一个位于提供给它的参数索引处的字符,如: (0)检索str中的第一个字符,()-1)检索最后一个字符。我运用此方法解决了比较字符串间首字母异同的问题。 实验3 迭代练习 实验4 方法的实现练习 实验目的:声明、定义和调用方法,理解实参和形参的含义。 心得体会:在该实验中,我掌握如何写方法、调用方法,并掌握如何向方法中传递信息和从方法中返回信息。方法声明为非void(构造方法除外)则需要用return语句返回一个相应类型的返回值。 实验5 简单类型数组练习 实验目的:学习创建简单类型的数组,并能用循环语句处理数组。 心得体会:通过该实验,我学会了如何让建立简单类型的数组,并掌握了将数组作为方法的传入参数和返回值。在该实验中,遇到的问题主要是如何将一个连续的多位数在存入数组时,每个数组元素只对应改多位数的一个组成数。我解决的方法如下: for(i=0; i<6; i++){ n[i] = aa%10; etname()是获得正在执行的线程的名字,().getid()是thread类中返回该线程的标识符的方法,().getpriority()是thread类中返回线程的优先级的方法。 实验12 i/o及文件处理 实验目的:掌握并使用java中的i/o和文件。 心得体会:对于该实验,由于比较难,只是基本掌握了文件读写的方法和规则,还有待17周java实训时继续攻坚克难。 结语:在这一系列的实验中,我基本掌握了java的编程规则、知识要点和一些小技巧,特别是对面向对象的编程思想和风格有了进一步的认识和体会。同时,因正确的编出程序而带来的成就感让我对编程更加感兴趣。对于在这些实验过程中,请教老师、同学互助、查阅资料等基本的学习方式,使我更加领悟到集体和团队的力量,也树立了敢于攻坚的信心。篇二:java实训心得 java实训心得 在上学期的最后一周和本学期的第一周,我和同组的学员在学校机房进行了java暑期实训,现在已经结束了。 回首上学期的java学习,重点还是在学习概念等一些常识性的东西,application应用程序和applet小程序,它的开发工具、数据类型、变量、接口、输入输出流等。学会分析异

java异常处理试题及答案

异常处理练习题 一、选择题 1.java中用来抛出异常的关键字是 (C) A、try B、catch C、throw D、finally 2.关于异常,下列说法正确的是(A) A、异常是一种对象 B、一旦程序运行,异常将被创建 C、为了保证程序运行速度,要尽量避免异常控制 D、以上说法都丌对 3.(A)类是所有异常类的父类。 A、Throwable B、Error C、Exception D、AWTError 4.java语言中,下列哪一子句是异常处理的出口(C) A、try{…}子句 B、catch{…}子句 C、finally{…}子句 D、以上说法都丌对 5.下列程序的执行,说法错误的是 (C) public class MultiCatch { public static void main(String args[]) { try { int a=args.length; int b=42/a; int c[]={1}; c[42]=99; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越边界异常:”+e); } } } A、程序将输出第15行的异常信息 B、程序第10行出错 C、程序将输出“b=42”

D、程序将输出第15和19行的异常信息 6.下列程序的执行,说法正确的是(D) class ExMulti { static void procedure() { try { int c[]={1}; c[42]=99; } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越界限异常:”+e); } } public static void main(String args[]) { try { procedure(); int a=args.length; int b=42/a; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } } } A、程序只输出第12行的异常信息 B、程序只输出第26行的异常信息 C、程序将不输出异常信息 D、程序将输出第12行和第26行的异常信息 7.下面程序抛出了一个“异常”并捕捉它。请在横线处填入适当内容完成程序。class TrowsDemo { static void procedure() throws IllegalAccessExcepton { System.out.println(“inside procedure”); throw__new_____IllegalAccessException(“demo”);

4M2S异常处理

4M 4M2S 异常对应方案 人员: 一人员: 1 确保每线配备班长1名、配膳员1名、修理员1名(ENTER FUSER可两线配备修理员一名),且全部培训为多能工。理由:在各线有人员流动时可确保每线2-3名的顶位人员,以保证生产品质的稳定。 2 作业自责不良发生过多时:a 各线管理管理人员及现场应自我检讨:员工作业方法是否培训到位;员工情绪是否过于波动;工治具/设备是否无异常等等;b 是否有其它不良因素影响到员工的正常作业;c 尽量少批评或采用婉转的方式教育员工。理由:作业员在正常状态下作业时,无异常或很少有异常发生,在出现自责过于频繁时应是受到其它因素的影响所致,这是作为一个管理者必须做到的;批评员工只能造成员工情绪的波动化,甚至将这一情绪带入生产中,产生更多不良。 设备/ 二设备/治工具 1 首先对各线的设备及治工具作一个易损评价,对易出现异常的设备及治工具应随时确保1-2套备品,并配备专柜存放,并确保白、晚班各有一人持有钥匙;理由:在生产因易损设备及治工具异常时可暂以备品替代使用,以确保生产线不因设备及治工具的异常而影响生产乃至出荷。 2 当设备及治工具(不易损伤且无备品类)出现异常时,应先对异常的影响的程度作出相应的评价:a 在不影响FUSER品质的情况下,可边生产边通知相关技术担当马上到现场进行修理或作出紧急处理方案;理由:异常的发生对FUSER的品质无任何影响,没必要作无畏停线安排,影响生产的正常进行。 b 在无法对异常的影响程度作出相应评价或影响FUSER品质时,应立即停止生产(出现异常的生产线),并保持异常现象,同时立即知会相关技术担当马上至现场进行修理;理由:异常的发生对FUSER的品质有影响,生产应坚持以品质确保为基本方针,在品质确保的状况下再进行生产能率的提高。不能一味地追求产量而忽视品质。 三方法 各线作业员应严格按照OIC/ACP的操作方法进行作业,当对OIC/ACP的作业方法存有疑问时,应立即报告班长并知会相关技术担当进行确认,严格按照技术担当的指示方法进行作业; 理由:1> OIC/ACP为生技人员经过实践操作总结出的操作方法; 2>生技人员对机能了解清楚,操

java项目心得体会.doc

java项目心得体会 篇一:项目部心得体会 篇一: 项目心得体会 项目 心得体会 通过这次做项目, 使我对编程有了进一步的认识。做项目的时候,最重要的不是自己如何快速地将自己分配的 任务做完,而是要注重团队合作。一开始组内必须对这个项目的数据库的命名进行讨论,定 义表的属性的数据类型,表与表之间会有关联,所以有的属性的类型与长度必须定义一致, 这样访问数据库时才不会出错。如果一开始不将这些步骤统一下来的话,就会给后面的编程 带来一系列的问题。 我做的是销售管理, 做的内容包括查询销售记录、查询退货记录、销售添加和商品退货这四个界面。同时对四个 表进行处理,对销售主表、销售明细表这两个表插入数据;对销售主表和销售明细表进行退 货操作的同时,对退货表进行插入数据的操作;最后对销售主表和退

货表进行查询操作。 做这个项目的时候, 我浪费了太多的时间在销售添加界面上。首先对于界面的一些布局没有考虑清楚就动手,不 知道如何运用java语言来对数据库进行处理,对于细节方面考虑地不全面,导致了遇到了错 误就不停地修改。在插入数据到销售主表中停留的时间太长,不懂得运用打印功能来检查错 误。同时在修改库存的时候完全没有思路,只对库存进行了修改却在销售时没有对库存进行 判断,这就是程序的一大错误之处。正如老师所说,在第一个界面完成之后,接下来的商品 退货界面做起来就不太难了,对这个项目实现的功能也有了一定的了解,以及对这个项目如 何动作的有了基本的了解。 其实我在这个模块 遇到的最大的问题就是,一开始对这块模块到底实现的功能与细节分析得不彻底,所以在开 始编程的时候就手足无措。于是这部分的代码就出现了许多漏洞,然后在运行程序的时候就 不停地修补漏洞。接着就对这个界面的功能进行不停地完善,在修改的过程中也就浪费了许 多时间。

Java异常(习题)

java异常(习题) 练习 1. 填空 Java 中所有的错误都继承自______类;在该类的子类中, _______类表示严重的底层错误,对于这类错误一般处理的方式是___________; _______类表示例外、异常。 2. 查api,填空 异常类java.rmi.AlreadyBoundException,从分类上说,该类属于__________(已检查| 未检查)异常,从处理方式上说,对这种异常___________________; 异常类java.util.regex.PatternSyntaxException,从分类上说,该类属于_________(已检查|未检查)异常,从处理方式上说,对这种异常__________________。 4. (try-catch-finally)有如下代码:

问:当读入的n 分别为1,2,3,4,5 时,输出的结果分别是什么?

5. (自定义异常)创建两个自定义异常类MyException1 和MyException2。 要求: 1) MyException1 为已检查异常,MyException2 为未检查异常 2) 这两个异常均具有两个构造函数,一个无参,另一个带字符串参数,参数表示产生异常的详细信息。

问: 在//1 处,填入以下________代码可以编译通过,在//2 处,填入_________代码可以编译通过。 A. throws java.io.IOException B. throws java.io.FileNotFoundException, java.io.EOFException C. throws java.sql.SQLException D. 不能抛出任何异常。

数据库异常处理答案

一、实验/实习过程 实验题1在程序中产生一个ArithmeticException类型被0除的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException类的对象e 的方法getMessage给出异常的具体类型并显示出来。 package Package1; public class除数0 { public static void main(String args[]){ try{ int a=10; int b=0; System.out.println("输出结果为:"+a/b); } catch(ArithmeticException e){ System.out.println("除数不能为0"+e.getMessage()); } } } 实验题2在一个类的静态方法methodOne()方法内使用throw 产生ArithmeticException异常,使用throws子句抛出methodOne()的异常,

在main方法中捕获处理ArithmeticException异常。 package Package1; public class抛出异常 { static void methodOne() throws ArithmeticException{ System.out.println("在methodOne中"); throw new ArithmeticException("除数为0"); } public static void main(String args[]){ try{ int a=10; int b=0; int c=1; System.out.println("输出结果为:"+a/b); } catch(ArithmeticException e){ System.out.println("除数不能为0"+e.getMessage()); } } }

java培训心得体会

java培训心得体会 篇一:java初学者学习心得 学习Java心得体会 学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课不断的提高,思路在不断的开阔,思想在不断的升华,更重要的是自己的理想和抱负更加的坚定。对于一个投身于IT 的新人,经验谈不上,一些学习的心得倒是可以拿出来探讨一下,我们该如何面临这个似曾相识的社会,突然一天如此接近。面对“金融风暴”带来的就业压力,我们正在逐渐走向成熟,我们意志更加坚强,我们深知不经一番寒彻骨,哪来梅花扑鼻香。深深地体会到找一份好工作多么不容易的,尤其是能力匮乏的我们。一切都要付出行动,不能空想,要实现目标,就得不懈的努力。 的确,软件仍然是一个朝阳行业,对于人才的需求量也很大,这也是为什

么很多人努力走上这座独木桥的原因。但是当你面临人生的一个选择时,当你决定要踏上软件开发之路时,你应该问一下自己:我为什么要选择它?其实很多人在这条道路上摸爬滚打了多年也没弄清 楚这个问题的答案。如果你想在这条道路上有所成就的话,一是兴趣使然,二是做好自己的职业规划。软件开发其实是一条非常艰苦的路,不停的学习,不断的熬夜,没有鲜花更没有掌声,陪伴你的是那漫长而孤独的夜。想一想我们准备好迎接这一切了吗?如果没有兴趣我劝你还是放弃这条路,没有兴趣你就在这条路上走不长,等待你的只有转行。如果你真的把它作为你职业生涯的跳板,那么请你做好自己的人生规划,有步骤的实现它。话题稍微远了一点,现在我就谈谈自己在Java学习方面的心得和教训。 古人云:活到老,学到老。读书学习实乃艰苦之事,花费时间,消耗精力。 然苦之外亦见其乐:得到了知识,提高了认识,完善了自己。学习,求其真,务其实,应“敏而好学,不耻下问”,才能不断促使进

Java作业实验六---异常处理

提交方式: 把文件名改为学号姓名,提交文档和源码(只需提交最顶层包文件夹) 实验六异常处理 一、实验目的 1.学会利用Try-catch-finally语句来捕获和处理异常; 2.掌握自定义异常类的方法。 二、实验要求 1.通过编程理解系统异常处理的机制和创建自定义异常的方法。 2.掌握基础类。 三、实验内容 (一)异常处理机制 1. 编写使用try…catch 语句处理异常的程序文件Demo4_1.java,

编译并运行程序,并把运行结果复制在下面 。 注意:如果在catch 语句中声明的异常类是Exception,catch 语句也能正确地捕获,这是因为Exception是ArithmeticException的父类。如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception。 2、源文件是Demo3_2.java。要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。 【思考】 ①先运行上面程序,观察运行结果。 ②按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里那些语句没有被执行,为什么? 块外那些语句可被执行到,为什么? 修改a=0,保持c[2]=200; 保持a=10,修改c[3]=200, 修改a=0,修改c[3]=200; ③再添加一个catch{Exception e}{ },位置在最前面,观察编译信息,说明什么? 3、编写Demo3_3.java 程序,计算两数相除并输出结果。使用两个catch子句,分别捕捉除数为0的异常和参数输入有误异常。源代码如下:

java管理系统项目总结

java管理系统项目总结 篇一:java管理系统项目总结期末将至,怕没有时间再去写这篇不成器的文章,所以早早写完,早早留给时间去复习。随着期末的临近,java课程也结束了,距离之前写过的“java-象棋设计心得”有差不多过了2个月了。我们的java课程主要做全班选出来的两个项目,一个是象棋,一个就是人事管理系统。做完都要通过答辩才能评分,以此两次来作为整个java 学期的成绩。快走题了,就在这里止步回头! 这一次的主要通过问题->理解->修改->添加的步骤讲解,跟java-象棋设计心得的讲解思路基本上差不多。 ----问题篇 一开始着手这个java-人事管理系统项目的时候就感觉到这比之前的java-象棋项目难了,知识明显不够,需要边看书本源代码边查看API文档和通过网上来解惑。就这样,一周的时间就过去了,当然一周里还有很多课程需要跟上,所以并不是把一周的所有时间都花在项目设计上。 这里介绍一下我项目中遇到的一些“坎”: 1.布局管理器GridBagLayout的使用和GridBagConstraints类的使用 类和DefaultMutableTreeNode类和其他类的使用 面板和JSplitePane面板和其他面板 4.设计的界面的还原 5.数据库如何实现数据的保存

可见,问题多多,解决起来又会出现其它的问题,但我知道每一个项目必定存在多个类和面板的设计,设计的过程也是一个不断自我矛盾和自我更正的过程,只有这样设计出来的产品才符合我们的要求。其中首先要说问题的是界面的还原是比较耗费时间的,但这也是任何软件设计的第一步,所以必须理解透!其次就是数据库和SQL语言的学习,因为数据库是新知识,还没有可以通过课程来学习的,这就意味着只能通过自己学习新知识,这又是一个新问题的开始,但我知道必须要克服。最后就是动作的实现问题,例如:点击了这个节点,相应的功能是如何实现,是通过什么来实现的,这些问题也必须理解,因为是答辩问的最多问题。好了,问题篇就到这里了。 ----理解篇 理解的基本条件就是问题的产生,上篇说的就是问题篇,那么这里说的就是理解。或许这里有一些东西会跟java-象棋设计心得有些相同,所以会提醒一下就过了,理解是理解软件制作的必要过程,重要性可想而知了,在java-象棋设计心得里,有些理解的方法这里就不在重复了。那么这里要讲的东西不多,主要讲的是功能的实现过程,书本中人事管理系统的功能有,如下: 1.基本信息管理--添加人员信息、修改人员信息、删除人员信息、查询人员信息、部门管理; 2.人员调动管理--人员调动、调动历史查询; 3.人员考核管理--人员考核、考核历史查询; 4.劳资管理--劳资分配管理、劳资历史查询 因为基本上以上的所有功能的实现基本相同,所以这里通过其中一个功能的实现来粗略理

相关主题
文本预览
相关文档 最新文档