当前位置:文档之家› 实验10 JAVA 异常处理

实验10 JAVA 异常处理

实验10  JAVA 异常处理
实验10  JAVA 异常处理

实训报告

实验9 JA V A 异常处理

【实验目的】

1.掌握JAVA语言异常的概念。

2.掌握JAVA语言系统异常类的层次关系。

3.掌握JAVA语言系统异常类的功能和使用。

4.掌握自定义异常类的使用。

【预习内容】

1.JAVA Throwable类的子类:Error类与Exception类;

2.JAVA 异常的抛出,捕捉与处理;

3.异常类常用方法的使用;

4.JAVA异常throw 和throws语句的使用;

【实验内容及步骤】

1.上机验证题

1.阅读下面的程序,在理解的基础上,结合运行效果示例,把程序补充完整并运行程序:【示例】

编写使用try…catch 语句处理异常的程序文件LX9_1.java,源代码如下。

public class LX9_4 {

static void throwProcess() {

try {

____________ new NullPointerException("空指针异常");

}

catch (NullPointerException e) {

System.out.println("\n 在throwProcess 方法中捕获一个"+e.getMessage());

____________;

}

}

public static void main(String args[]) {

try {

throwProcess();

}

catch (NullPointerException e) {

System.out.println("再次捕获:"+e);

}

}

}

[程序清单]

public class LX9_1 {

static void throwProcess() {

try {

throw new NullPointerException("空指针异常");

}

catch (NullPointerException e) {

System.out.println("\n 在 throwProcess 方法中捕获一个"+e.getMessage()); throw e;

}

}

public static void main(String args[]) {

try {

throwProcess();

}

catch (NullPointerException e) {

System.out.println("再次捕获:"+e);

}

}

}

[程序运行过程]

2. 运行以下程序,并理解程序运行的结果?[程序清单]

import java.io.*;

public class ExceptionTest{

public static void main(String args[]) {

for(int i = 0; i < 4;i++) {

int k;

try {

switch( i ) {

case 0: //divided by zero

int zero = 0;

k = 911 / zero;

break;

case 1: //null pointer

int b[ ] = null;

k = b[0];

break;

case 2: //array index out of bound

int c[ ] = new int[2];

k = c[9];

break;

case 3: //string index out of bound

char ch = "abc".charAt(99);

break;

}

}catch(Exception e) {

System.out.println("\nTestcase #" + i + "\n");

System.out.println(e);

}

}

}

}

[程序运行结果(截图)]

3. 运行以下程序,并理解程序运行的结果。

import java.io.*;

public class TryTest{

public TryTest(){

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{

System.out.println("-------------------");

System.out.println("finally");

}

System.out.println("No exception?");

}

public static void main(String args[]){

new TryTest();

}

}

2.编程拓展题

1.(1)理解并运行以下程序(截图)。见FLASH正文图4-37

class Arithmeticexception

{ public static void main(String[] args) throws ArithmeticException,ArithmeticException

{ int a;

a = 5 / 0; //将引发除零异常

int b[]=new int[2];

b[2]=5; //可能引发数组越界异常

}

}

(2)参考以上程序,编写一个自定义异常类,并编写基于该异常类的测试类。[程序清单]

class MyFirstException extends Exception

{

public MyFirstException(String msg)

{

super(msg);

}

}

public class TestMyException

{

public static void firstException() throws MyFirstException

{

throw new MyFirstException("\"firstException()\""+"method occurs an exception!");

}

public static void main(String[] args)

{

try { TestMyException.firstException();}

catch(MyFirstException e1)

{

System.out.println("Exception:"+e1.getMessage());

}

}

}

[程序运行过程]

2.验证如下程序,并写出运行结果(截图):

/** PolytechnicStudent.java:定义了polytechnicstudent 包,包含了两个接口、一个抽象类和一个具体类 */

package student.polytechnicstudent;

interface People //定义父接口

{ String getName(); } //定义一个抽象方法

interface Student extends People //定义子接口

{ String getNumber(); }//新增一个抽象方法

abstract class CollegeStudent implements Student

{ // 定义专科学生类(抽象类)

static final int LENGTHOFSCHOOLING =3; //定义学制(类常量)

String strName; //新增学生姓名

String strNumber; //新增学号

String strSpecialty; //新增学号

public String getName() //实现了People 接口中的getName方法{ return strName; }

public String getNumber() //实现了Student 接口中的getNumber方法 { return strNumber; }

public String toString() //新增方法

{ return "学生姓名=" + strName + ", 学号=" + strNumber; } public abstract String getSpecialty();

//新增抽象方法getSpecialty()

}

public class PolytechnicStudent extends CollegeStudent

{ //定义高职学生类(具体类)

private String strPracticeCompany = "";//新增实习单位

public PolytechnicStudent(String name, String number)//构造方法 { strName = name; //属性strName继承于父类

strNumber = number; //属性strNumber继承于父类 }

public PolytechnicStudent( String name, String number, String specialty) //重载构造方法 {

this(name,number);//利用this关键字调用本类的另一构造方法(2个参数)

strSpecialty = specialty;

}

public String getSpecialty() //新增方法getSpecialty()

{

return strSpecialty;

}

public void setSpecialty(String specialty)

{ //新增方法setSpecialty(...)

strSpecialty = specialty;

}

public String toString()//覆盖父类的toString()方法

{ return super.toString() + strSpecialty+ ", 学制=" +

LENGTHOFSCHOOLING + "年\n";

//利用super关键字调用父类中的同名方法toString()

}

}

本程序自定义了一个包: student.polytechnicstudent,该包中的所有类和接口被存放在当前文件夹的student子文件夹下的polytechnicstudent文件夹中,该程序编译的命令行如下:

javac -d . PolytechnicStudent.java

其中参数–d . 表示把编译生成的包文件放在当前的目录下。本例中当前目录为:D:\软件112\复件 jdk1.5.0\bin ,因此本程序编译结果如图4-30所示:

图4-30 包文件编译

对于已经创建的包的应用如下:

import student.polytechnicstudent.PolytechnicStudent;//导入自定义包public class PolytechnicStudentTest

{ public static void main(String[] args)

{ PolytechnicStudent tom = new PolytechnicStudent("Tom",

"20020888");

//系统调用含2参数的构造方法

tom.setSpecialty("软件技术");

System.out.println(tom.toString());

//调用子类PolytechnicStudent中的toString()方法

PolytechnicStudent jack = new PolytechnicStudent("Jack",

"20020999","电子商务");

//系统调用含3参数的构造方法

System.out.println(jack.toString());

//调用子类PolytechnicStudent中的toString()方法

// CollegeStudent linda = new CollegeStudent();

// error,抽象类只能定义其句柄,不能定义其对象

Object linda = new PolytechnicStudent("Linda", "20020222",

"国际贸易");

//Object 类是所有类的父类

//父类句柄可以关联一个子类(具体类)对象,发生多态现象

//linda.setSpecialty("国际贸易");

//error,父类句柄虽然关联了一个子类对象,但不允许访问子类所特有的方法System.out.println(linda.toString());

//利用一个父类句柄访问一个父子类都具有的覆盖方法,

//实际上调用的是子类中的那个覆盖方法,此处发生多态现象

}}

PolytechnicStudentTest.java程序运行的结果如下图所示【自己运行截图】:

3. 参照上题编写一个包(package): com.package, 定义一个People接口,定义一个抽象类员工类Employee类实现People接口,定义一个具体类Manage类继承于Employee 类,并编写测试运行类。

(1)

package manage;

interface People

{ String getName(); }

interface com extends People

{ String getSex(); }

abstract class Employee implements com

{

static final int LENGTHOFSCHOOLING =5;

String strName;

String strSex;

String Aa;

public String getName()

{ return strName; }

public String getSex()

{ return strSex; }

public String toString()

{ return"员工姓名=" + strName + ", 性别=" + strSex; }

public abstract String getAa();

}

public class Manage extends Employee

{

private String Company = "";

public Manage(String name, String Sex)

{ strName = name;

strSex = Sex;

}

public Manage( String name, String Sex,String a)

{

this(name,Sex);

Aa = a;

}

public String getAa()

{

return Aa;

}

public void setAa(String a)

{

Aa = a;

}

public String toString()

{ return super.toString() + Aa+ ", 工龄=" + LENGTHOFSCHOOLING + "年\n";

}

}

(2)

package manage;

import manage.Manage;

public class manageTest

{ public static void main(String[] args) { Manage AAA = new Manage("AAA", "女");

AAA.setAa("(员工)");

System.out.println(AAA.toString());

Manage BBB=new Manage("BBB", "男");

BBB.setAa("(员工)");

System.out.println(BBB.toString());

}

}

JAVA 异常处理实验报告

实验三异常处理 [实验目的] 1.掌握异常处理方法及熟悉常见异常的捕获方法。 [实验内容] 1.练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch 子句的使用。 [实验步骤与要求] 第1题异常处理 要求声明定义两个Exception的异常子类:NoLowerLetter类和NoDigit类。再声明一个People类,该类中的void printLetter(char c)方法抛出NoLowerLetter异常类对象,void PrintDigit(char c)方法抛出NoDigit异常类对象。 [作业提交] 将代码贴在下面: class NoLowerLetter extends Exception{ String message; NoLowerLetter(char c){ message=c+"不是正数"; } public String getMessage(){ return message; } } class NoDigit extends Exception{ String message; NoDigit(char c){ message=c+"不是偶数"; }

public String getMessage(){ return message; } } class People{ public void printLetter(char c) throws NoLowerLetter{ if(c<0){ NoLowerLetter ex=new NoLowerLetter(c); throw(ex); } double number=Math.sqrt(c); System.out.println(c+"的平方根:"+number); } public void PrintDigit(char c) throws NoDigit{ if(c%2!=0){ NoDigit ex=new NoDigit(c); throw(ex); } double number=Math.sqrt(c); System.out.println(c+"的平方根:"+number); } } public class bianma{ public static void main(String args[]){ People p=new People(); try{ p.printLetter('Q'); p.printLetter(' '); } catch( NoLowerLetter e){ System.out.println(e.getMessage()); } try{ p.PrintDigit('d'); p.PrintDigit('a'); } catch( NoDigit e){ System.out.println(e.getMessage()); } } } 将结果运行截屏贴在下面:

JAVA实验3-异常处理和常用实用类-报告

信息工程学院1 《Java语言程序设计》实验报告 学院: 班级: 姓名: 学号: 成绩: 一、实习目标 (1)掌握Java的异常处理机制及相关实现方法; (2)掌握常用实用类的使用,熟悉使用JDK_API进行软件开发; (3)掌握Java中正则表达式的基本用法。 二、实验过程 实验题1 try-catch练习: JAVA_API: getMassage():返回此throwable或exception的详细消息字符串,正数除0 返回Infinity,负数除0返回-Infinity。 toString():对象利于null的详细消息字符串创建,则返回此对象的实际类的 名称,返回此throwable的简短描述。 printStackTrace():将错误的详细信息追踪到代码中具体某一行,将throwable 及其追踪输出至标准错误流。 代码截图: CatchError类: 实验报告的内容与格式按任课教师的要求书写。

MainTest类:

运行结果: 实验题2 用户自定义异常: 在ExceptionTest类中进行成绩录入和平均成绩的计算。 StasticScore类为成绩录入的具体方法,并进行异常检测。 ScoreException类继承StasticScore,输出错误提示。 代码截图: ExceptionTest类: ScoreException类:

StasticScore类:

运行结果:

实验题3 String & StringBuffer的使用: JAVA_API: Int indexOf(String str, int fromIndex)函数:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。如果不存在,返回-1。 Static String valueOf(int i)函数:返回int参数的字符串表示形式。该表示形式正是单参数的interger.toString方法返回的结果。 Int indexOf(String str, int fromIndex)函数:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。如果不存在,则返回-1。 Public StringBuffer append(String str)函数:将指定的字符串追加到此字符序列。按顺序追加String变量中的字符,使此序列增加到该变量的长度。 代码截图: TestOfKeyword类:

《面向对象程序设计》第10章在线测试

《面向对象程序设计》第10章在线测试 A B C D 、关于异常对象的说法正确的是( A B 对象 C、以引用方式传递异常对象时,抛出的是局部静态对象 D 对象 A块相当于一个以类型为单一参数的函数 B 以捕捉 C块中可以声明变量,该变量可以在块外使用 D 数值 A B C D 、为保证程序中的全局变量不与开发商提供的全局变量重名,可以采取的措施是( A B C D

C、C++程序绝对不能出现错误 D、异常处理使C++程序在出现错误的情况下仍能继续运行 2、下面说法正确的是() A、C++程序中可以存在多个名字空间 B、不同的名字空间中不能出现名字相同的变量 C、名字空间能避免名字冲突 D、C++程序中也可以不定义名字空间 3、关于异常处理的说法正确的是() A、将异常的检测与处理分离 B、异常就是错误 C、异常由函数调用引起 D、在上层调用函数中使用try检测函数调用是否引发异常 4、下面与异常处理相关的关键字有() A、Throw B、throw C、try D、Try 5、下面的说法正确的是() A、引发异常用关键字throw B、在被调用函数中检测到异常条件用throw都可以引发异常 C、被调用函数只有在try块中用throw才可以引发异常 D、检测到的异常由catch捕获并处理 第三题、判断题(每题1分,5道题共5分) 1、抛出异常的模块并不负责异常的处理,该异常的处理可以程序中的任何位置。

正确错误、异常处理器根据抛出异常模块的报告来处理异常。 正确错误、异常信号传递方式有三种:传值方式、引用方式和指针方式。 正确错误表示函数将会抛出所有类型的异常 正确错误处理程序的出现次序无关紧要。 正确错误

JAVA异常处理实验报告

实验报告 实验名称:异常处理 学院:电子信息工程学院 班级:电信01班 姓名:鲁川 学号: 121040110113 日期: 2014.11.3 成绩:

一、实验名称:异常处理 二、实验目的: 1.掌握异常处理机制的运作 2.掌握处理异常的几个子句:try…catch..finally、thorws和throw 3.掌握字符串类的相关操作 三、实验内容: 1. 编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数 组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。 2. 给定一个字符串,将字符串中的所有大写字母变成小写字母,数字用0来代替,其他符号用#代替。 四、实验代码 1.ExceptionDemo.java class ExceptionDemo { public static void main(String[] args) { int [] arr = new int[]{13,24,1,53,24}; try { int num = arr[5]; } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界啦!!!"); } finally { System.out.println("此处代码一定会执行的--finally"); } } } 运行结果:

2.StringTest.java class StringTest { public static void main(String[] args) { String str = "DfS分手dsA吧25J奋45斗"; System.out.println("原字符串=="+str); StringBuffer sb = new StringBuffer(); for(int i = 0;i='A' && ch<='Z') { sb.append(Character.toLowerCase(ch)); } else if(ch>='a' && ch<='z') { sb.append(ch); }else if(ch>=49 && ch<=58) { sb.append(0); }else { sb.append("#"); }

java 异常处理

实验五异常处理 【实验目的】 1.了解Java 中异常处理(exception)的作用。 2.掌握异常处理的设计方法。 【实验内容】 一.Java的异常处理。源文件是Ex4_1.java。要捕捉的异常是除数为零和数组下标越界。 通过修改a和c[]下标值体验程序。 public class Ex4_1 { public static void main (String[] args) {int a, b; int c[]={1,2,3}; try{ a=10; b=100/a; System.out.println ("当前a值:"+a); c[2]=200; System.out.println ("当前数组长:"+c.length); }catch(ArithmeticException e) { System.out.println ("除零错误:"+e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println ("数组下标越界:"+e); } finally { System.out.println ("我是finally");} System.out.println ("我能被正常执行到"); } } 【思考问题】 ①先运行上面没有错误程序,观察运行结果。 ②按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里那 些语句没有被执行,为什么? 块外那些语句可被执行到,为什么? ◆修改a=0,保持c[2]=200; ◆保持a=10,修改c[3]=200, ◆修改a=0,修改c[2]=200; ③再添加一个catch{Exception e}{ },位置在最前面,观察编译信息,说明什么?2.自定义异常类。注意throw、throws的使用。源文件是Ex4_2.java。 class MyException extends Exception //自定义异常类 {public String toString() { return "除数等于零"; } }

第10章 异常处理

第10章异常处理 10.1 异常处理概述 1、异常 异常是程序运行时产生的错误,由大量例外的,非正常情况下产生的。这些错误有的是致命的,导致程序无法继续运行,而有的错误应该是可以处理的,如用户输入错误、不能打开文件、数组下标越界等。 程序在正常的情况下完成正确的功能,这是最基本的要求,但这还远远不够。在非正常的情况下,程序也应该能产生适当的反应,并继续运行下去,而不是直接终止程序,甚至产生死机等灾难性的后果。好的程序一个非常重要的特点就是鲁棒性,即程序对环境的适应能力,在环境条件出现异常情况下(如用户输入错误,文件被移动、被破坏等),也应有正确合理的表现。 因此我们在程序设计时,应该发现一些会导致运行错误的情形,并进行相应的错误处理,使程序能正常运行下去,而不产生灾难性后果,并导致程序终止。 2、异常示例 查看下面这个程序:输出若干组整数相除的结果。这个程序在编译时没有错误,但在运行时却会产生运行异常。 例10-1 异常示例 class Test{ static void f (int a, int b){ System.out.println(a+"/"+b+"="+a/b); } public static void main( String args[ ] ){ f(10, 3); f(5, 0); f(3, 2); } } 运行结果: 10/3=3 Exception in thread "main" https://www.doczj.com/doc/768042629.html,ng.ArithmeticException: / by zero 说明:程序运行时,在执行方法f中的表达式a/b的运算时,若除数b为0时,运算将无法进行,产生运行时异常。我们在main函数中三次调用函数f,其中第二个调用会导致除数为0,运行中产生了异常,程序无法继续运行,系统会非正常的终止程序。当然在这个程序中,除数为0的异常是应该处理,也是可以处理的异常,程序员应该对除数为0的情况给出处理,并使程序能继续运行下去,而不是非正常的终止程序。 3、传统的异常处理方法 传统的异常处理方法是在程序中进行异常条件判断(用if语句),并根据判断结果进行

实验 异常处理

实验报告六 一【实验目的】 1.掌握异常的基本概念。 2.理解异常处理机制。 3.掌握创建自定义异常的方法。 二【实验内容】 Java提供了异常处理机制,当程序中发生异常时,程序产生一个异常事件,相应地生成异常对象。系统从生成对象的代码开始,沿方法的调用栈逐层回溯,寻找相应的处理代码,并把异常对象交给该方法处理。 实验1 录入如下源程序: 1、 public class Ex7_1 { public static void main(String[] args) { String output[] ={ "The ","quick ","brown ","fox ","jumps ", "over ","the ","lazy ","dog."}; int i =0; while(i<12){ System.out.print(output[i++]); } System.out.println("haha..."); } } 2、保存程序Ex7_1.java,编译运行程序,观察并分析程序的运行结果。The quick brown fox jumps

over the lazy dog.Exception in thread "main" https://www.doczj.com/doc/768042629.html,ng .ArrayIndexOutOfBoundsException at Ex7_1.main(Ex7_1.java:9),可以看出,在第9行出现了数组下标越界的异常,导致了程序的中止,而程序的最后一条语句“System.out.println("haha...");”没有执行。 运行结果: 3、我们修改程序,加入异常处理,当程序发生异常时,经过异常处理后,程序还可以继续执行。 异常处理代码格式: try{ //可能有问题的代码 } catch(ArrayIndexOutOfBoundsException e) { //处理代码 break; } catch(Exception e1) { /// } catch(…..){ } 修改代码在可能出错的地方加入: try{ // } catch(ArrayIndexOutOfBoundsException e) {

第五章Java语言异常处理-实验题目

第五章Java语言异常处理--实验题目 一、实验目的 1. 掌握Java的异常处理机制。 2. 掌握try、catch、throws和finally这5个关键字的用法。 3. 掌握成员的几个异常类。 4. 掌握自定义异常的使用。 二、实验内容 1.编写程序,从键盘上输入两个数。将第一个数除以第二个数并显示结果;处理所有可能的异常。 2.写出下面程序运行的结果: 3.写出下列程序的输出结果。

4.有下列程序: 若用下面方式执行该程序,则baz的值为( )。 java Test Red Green Blue (A)“”(B)null (C)"Red”(D)”BIue”(E)”Green”(F)代码不能编译(G)程序抛出异常5.有下列程序: 该程序的输出结果为( )。 (A)没有任何输出(B)输出“Finally”(C)编译错误(D)抛出异常 6.有下列程序:

该程序的输出结果为( )。 (A)没有任何输出(B)输出“Finally”(C)编译错误(D)抛出异常7.修改下列程序的错误之处。 8.写出下列程序的运行结果。

9.编写一个程序,要求从键盘输入一个double型的圆的半径,计算并精出其面积。 测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。10.编写一个应用程序,在main()方法中使用try块抛出一个Exception类的对象,为Exception的构造方法提供一个字符串参数,在catch块内捕获该异常并打印出字符串参数。添加一个finally块并打印一条消息。 11.创建一个自定义的异常类,该类继承Exception类,为该类写一个构造方法,该构造方法带一个String类型的参数。写一个方法.令其打印出保存下来的String对泉。再编写一个类,在main()方法中使用try--catch结构创建一个MyException类的对象并抛出,在catch块中捕获该异常井打印出传递的String消息。

材料科学基础第十章答案

材料科学基础第十章答案

第十章答案 10-1名词解释:烧结烧结温度泰曼温度液相烧结固相烧结初次再结晶晶粒长大二次再结晶 (1)烧结:粉末或压坯在低于主要组分熔点的温度下的热处理,目的在于通过颗粒间的冶金结合以提高其强度。 (2)烧结温度:坯体在高温作用下,发生一系列物理化学反应,最后显气孔率接近于零,达到致密程度最大值时,工艺上称此种状态为"烧结",达到烧结时相应的温度,称为"烧结温度"。 (3)泰曼温度:固体晶格开始明显流动的温度,一般在固体熔点(绝对温度)的2/3处的温度。在煅烧时,固体粒子在塔曼温度之前主要是离子或分子沿晶体表面迁移,在晶格内部空间扩散(容积扩散)和再结晶。而在塔曼温度以上,主要为烧结,结晶黏结长大。 (4)液相烧结:烧结温度高于被烧结体中熔点低的组分从而有液相出现的烧结。 (5)固相烧结:在固态状态下进行的烧结。 (6)初次再结晶:初次再结晶是在已发生塑性变形的基质中出现新生的无应变晶粒的成核和长大过程。 (7)晶粒长大:是指多晶体材料在高温保温过程中系统平均晶粒尺寸逐步上升的现象.

(8)二次再结晶:再结晶结束后正常长大被抑制而发生的少数晶粒异常长大的现象。 10-2烧结推动力是什么?它可凭哪些方式推动物质的迁移,各适用于何种烧结机理? 解:推动力有:(1)粉状物料的表面能与多晶烧结体的晶界能的差值, 烧结推动力与相变和化学反应的能量相比很小,因而不能自发进行,必须加热!! (2)颗粒堆积后,有很多细小气孔弯曲表面由于表面张力而产生压力差, (3)表面能与颗粒之间形成的毛细管力。 传质方式:(1)扩散(表面扩散、界面扩散、体积扩散);(2)蒸发与凝聚;(3)溶解与沉淀;(4)黏滞流动和塑性流动等,一般烧结过程中各不同阶段有不同的传质机理,即烧结过程中往往有几种传质机理在起作用。 10-3下列过程中,哪一个能使烧结体强度增大,而不产生坯体宏观上的收缩?试说明理由。(1)蒸发-冷凝;(2)体积扩散;(3)粘性流动;(4)晶界扩散;(5)表面扩散;(6)溶解-沉淀 解:蒸发-凝聚机理(凝聚速率=颈部体积增加)

化学实验中异常现象及处理方法

化学实验中异常现象及处理方法 化学是一门实验为基础的科学,同时也是提高学生兴趣和积极性的方法。但是在实验的过程中避免不了一些异常,那你们又是如何处理的呢?下面就来分享一下我在演示实验中的小插曲吧。 早几天,在做氢氧化钠溶于水的演示实验时,目的是探究氢氧化钠溶于水放出热量的,结果就出现了一点异常。我先在一支试管里倒了一定量的水,然后加入一定量的氢氧化钠固体后,突然间溶液变红了,同学们立马说:“氢氧化钠溶于水后,溶液变红了”。我暂时很镇定,没说话。随后我要同学摸了下试管壁问“有何感觉呀”。同学说:“有点烫手呀”。好的,实验已完成了。下面请同学们说说:“溶液为什么变红了呢”,变红的原因是什么呢?学生沉思了半天还是没找到答案。于是我就说:“产生红色的溶液并不是氢氧化钠与水反应产生的,你们回忆下,上节课中讲到氢氧化钠遇到什么会产生红色溶液呢?这时有个同学小声地说了一句:“可能是试管里有酚酞溶液吧”。我就说了一句:是的,正式这个原因,因为上节课我用试管做了实验,可能是没洗干净,试管里还残留酚酞溶液。解释完后,有的同学将信不信的样子。就在此时,我又用了另一支清洗干净的试管重新演示了一遍。红色没有出现,这时学生信服了。道理也明白了,虽然是我的粗心失误导致了实验的失败,但是经过这样的处理,我觉得让学生不仅明白了做实验要实事求是,勇于探索,善于思考。另外还加深了他们对指示剂变色的理解,也锻炼了解决问题的能力。同时,我也明白了,虽然这是一个很小的失误,但我知道了在做实验时,一定要做好充分的准备,注重细节,严格规范自己的操作。其次,也让我明白了,在今后的教学中,即使是实验失败了,出现了异常,先要冷静,然后就事论事,分析出现异常的原因,而不是置之不理。 这就是我在实验过程遇到的一点异常以及我的应对措施。你们有过类似的异常吗?

JAVA异常实验报告

一. 实验目的及实验环境 实验目的:1.理解JA V A对异常的处理 2.掌握自定义异常的定义方式 实验环境:eclipse 4.4 二. 实验内容 1.假设Sum类中有一个addContinue(int n)方法,当n>0时,方法翻译1+2+…+n 的和;当n<0时,方法抛出一个受检查的ArgumentException异常。ArgumentException类应该提供一个能够接受并保存n值得构造方法,以及一个能返回n值得实例方法,现定义Sum类以及ArgumentException类,并编程测试它们。 三.方案设计 1.定义三个类Sum,ArgumentException,Test类 2.分别在类中实现加法,异常抛出和测试 四.测试数据及运行结果 1.正常测试数据(3组)及运行结果;

2.非正常测试数据(2组)及运行结果。 五.总结 1.实验过程中遇到的问题及解决办法; ①中没有明确表示需要进行异常抛出很有可能就会忘记这个题目存在的问题。所以平常程序设计时,应该多考虑不同的情况,防止程序出现不可逆的漏洞。 ②如果发生可识别的运行错误,系统应产生一个相应的异常类对象,并进一步寻找异常处理代码来处理它,确保程序能从故障中恢复,之程序能够运行下去,直

到结束。 2.对设计及调试过程的心得体会。 中断,影响程序正常运行的事件称为异常。异常处理是使程序从故障中恢复,他包括提示异常信息、不产生无效结果和释放资源三方面内容。其中,显示异常信息和不产生无效结果可通过try和catch块来实现,释放资源可通过finally块实现。 附代码 public class Add { public int addContinue(int i) throws ArgumentException{ int sum=0; if( i<0){ throw new ArgumentException(i); } for(int n=0;n<=i;n++){ sum=sum+n; } return sum; } } public class ArgumentException extends Exception { private int n; public ArgumentException(int n) { this.n = n; } public int getN(){ return n; } } public class test { public static void main(String[] args){ Add s = new Add(); try { System.out.println(s.addContinue(-1)); } catch (ArgumentException e) { System.out.println(e.getN()); } } }

实验三 Java异常处理

实验三Java异常处理 一、实验目的 1)掌握Java异常的概念及工作机制 2)掌握异常的分类 3)掌握抛出异常语句的使用(throw) 4)掌握抛出捕获处理异常语句的使用(try…catch…finally) 5)掌握上抛异常语句的使用(throws) 6)掌握创建自定义异常 二、实验内容 自定义一个异常类,求两个数的最大公约数。 三、实验步骤 1)声明一个类,继承与Exception,用来处理求公约数时被除数小于除数抛出异常。 2)声明一个方法来求公约数。 3)在主方法里通过控制台输入二个人数并把求公约数的方法写在try{}中,catch{}填写出现的自定义的异常及ArithmeticException 异常。 四、实现代码 import java.util.Scanner; class MyException extends Exception { int m,n;

public MyException(int m,int n) { this.m=m; this.n=n; } public void process() { System.out.println("被除数小于除数!"); } } public class divisor{ int m,n; public divisor(int m,int n) { this.m=m; this.n=n; } public int div() throws MyException { int tmp;

if(m

第十章(神经症)

第十章神经症与癔症 一、目的与要求 1.掌握神经症的概念及分类。 2.掌握各种神经症的临床特征、诊断及鉴别诊断。 3.掌握各种神经症的治疗。 4.掌握癔症的临床表现、诊断及鉴别诊断。 5.了解神经症的病因及发病机制。 6.了解神经症的流行病学资料。 7.了解神经症的病程和预后。 8.神经症是一种常见疾病。多数神经症患者首诊于综合科,而有些综合科医生对于此类疾病的识别和处理能力有限。因此,通过本章的学习,要求学生在今后的临床工作中能识别神经症,并能提出合理的治疗建议,以减少误诊和医疗资源的浪费。 二、各部分应掌握和了解的主要内容 第一节神经症的病因和发病机制 1.了解国内外神经症的流行病学特征,包括一些具体类型的流行病学特征。 2.了解神经症的病因。 3.了解神经症在国内外诊断分类系统中的大体变迁。 4.简要了解几种有代表性的神经症理论(精神分析的神经症理论、行为主义的神经症理论、认知心理学的神经症理论,人本主义心理学的神经症理论和森田的神经质理论)。 第二节神经症的临床表现 1.掌握神经症病人常出现的几大类症状群的特征,包括脑功能失调症状群,情绪改变症状群,强迫症状群,疑病症状群,躯体不适症状群及睡眠障碍症状群。 2.掌握神经症的共同特征,包括患者的生物-心理-社会学基础、症状范围

及其组合方式等等,认识到神经症是一组精神障碍的总称,尚未发现有器质性病变,患者有相当的自知力,社会功能相对完好。 第三节神经症的诊断与治疗 1.掌握神经症的诊断原则与鉴别诊断。 2.掌握神经症的治疗原则。 第四节神经症的常见类型 1.掌握焦虑症的临床表现:以广泛和持续性焦虑或反复发作的惊恐不安为主要特征,常伴有自主神经紊乱、肌肉紧张与运动性不安,临床上分为广泛性焦虑和惊恐障碍两种主要形式。掌握焦虑症的诊断、鉴别诊断及治疗方法。需要注意的是,焦虑症的焦虑症状是原发的。 2.掌握强迫症的临床表现:其特点是有意识的自我强迫与反强迫同时存在,二者的尖锐冲突使患者焦虑和痛苦;病程迁延的患者可表现为以仪式化动作为主,而精神痛苦减轻,但此时社会功能明显受损。掌握强迫症的诊断、鉴别诊断及治疗方法。应了解到慢性强迫症患者由于出现了对病态体验的适应行为方式,此时病人的求治要求可能会变得并不十分迫切。 3.掌握恐惧症的临床特点:对某种客观事物或情境产生异乎寻常的恐惧和紧张,自知这种反应是过分或不合理的,但难以控制,以致极力回避该事物或情境。掌握恐惧症的诊断、鉴别诊断及治疗方法。了解恐惧对象的通常分类。了解恐惧发作时可以伴有抑郁、强迫、人格解体等症状。 4.掌握躯体形式障碍的主要特征:病人反复陈述躯体症状,不断要求给予医学检查,无视反复检查的阴性结果,不相信医生的无躯体疾病的再三保证。掌握躯体形式障碍的诊断、鉴别诊断及治疗方法。了解躯体形式障碍的类型,其中疑病障碍(症)的诊断在我国应用较多。 5.掌握神经衰弱的主要特征:表现为脑功能失调症状、常伴有情绪症状及心理生理症状,其核心症状是精神疲劳。掌握神经衰弱的诊断、鉴别诊断及治疗方法。

JAVA实验报告5 异常处理实验

中南财经政法大学武汉学院实验报告 实验课名称:__JAVA语言____ 学生姓名:_______ 专业班级:__网络工程1104 学号:11071125__ 开课时间:___2013年2月26日_ 教务处制

《Java程序设计基础》实验报告 实验序号:05实验项目名称:异常处理 学号11071125姓名专业、班级 实验地点计-202指导教师时间2013-5-14一、实验目的及要求 了解异常处理机制; 了解异常的概念; 掌握抛出异常、捕获异常和异常处理的方法; 了解自定义异常类的定义和使用方法。 二、实验设备(环境)及要求 1、Windows-XP操作系统 2、Eclipse应用程序 三、实验内容与步骤 编写一个类ExceptionTest1,在main方法中使用try、catch、finally: ①在try块中,编写被0除的代码。 ②在catch块中,捕获被0除所产生的异常,并且打印异常信息。 ③在finally块中,打印一条语句。 四、实验结果与数据处理 import java.util.*; public class ExceptionTest1{ public static void main(String[]args){ Scanner in=new Scanner(System.in); try{ System.out.print("请输入被除数:"); double beichushu=in.nextDouble(); System.out.print("请输入除数:"); double chushu=in.nextDouble(); if(chushu==0) throw new ArithmeticException("请输入不为0的数字!"); double i=(beichushu/chushu); System.out.println("二者的商为:"+i);}catch(InputMismatchException e1){ System.out.println("请输入数字!");

实验八 异常处理

实验八异常处理 【开发语言及实现平台或实验环境】 Windows2000 或XP,JDK1.6与Jcreator4.0 【实验目的】 了解Java 中异常处理(exception)的作用。 掌握异常处理的设计方法。 【实验要求】 理解系统异常处理的机制和创建自定义异常的方法。 【实验步骤】 一.了解异常处理机制 1.错误与异常 在程序执行期间,会有许多意外的事件发生。例如,程序申请内存时没有申请到、对象还未创建就被使用、死循环等,称为运行错误。根据错误的性质将运行错误分为错误与异常两种类型。 (1)错误 程序进入了死循环或内存溢出,这类现象称为错误或致命性错误。错误只能在编程阶段解决,运行时程序本身无法解决,只能依靠其它程序干预,否则会一直处于一种不正常的状态。 (2)异常 运算时除数为0,或操作数超出数据范围,打开一个文件时发现文件不存在,网络连接中断等等,这类运行错误现象称为异常。对于异常情况,可在源程序中加入异常处理代码,当程序出现异常时,由异常处理代码调整程序运行流程,使程序仍可正常运行直到正常结束。 由于异常是可以检测和处理的,所以产生了相应的异常处理机制。而错误处理一般由系统承担。 对于一个应用软件,异常处理机制是不可缺少的。程序员必须在程序中考虑每一个可能发生的异常情况并进行处理,以保证程序在任何情况下都能正常运行。事实证明,一个仔细设计了异常处理的程序,可以长时间的可靠运行,而不容易发生致命的错误,如程序被迫关闭、甚至系统终止等等。所以学会进行异常情况处理对于想编写功能完善且具有实用价值的程序员来说是必不可少的。 2.异常发生的原因 (1)Java 虚拟机检测到了非正常的执行状态,这些状态可能是由以下几种情况引起的:·表达式的计算违反了Java 语言的语义,例如整数被0 除。 ·在载入或链接Java 程序时出错。 ·超出了某些资源限制,例如使用了太多的内存。 (2)Java 程序代码中的throw 语句被执行。 (3)异步异常发生。异步异常的原因可能有: ·Thread 的stop 方法被调用。 ·Java 虚拟机内部错误发生。 3.异常处理机制 发生异常后,怎么处理异常呢?Java 提供了异常处理机制来处理异常。分为两个步骤:(1)抛出异常

第12章 异常处理 习题

第12章异常处理 一.单项选择题 1.程序中的错误可以分为以下三类,除了【】。 A) 逻辑错误B) 运行错误C) 自定义错误D) 语法错误2.程序运行期间发生的错误称为【】。 A) 版本B) 断点C) 异常D) 属性 3.在C#程序中,可以使用try…catch机制来处理程序出现的【】错误。 A) 语法B) 拼写C) 运行D) 逻辑 4.以下关于C#的异常处理的叙述中,正确的是【】。 A) 一个try块后面只能跟随一个catch块 B) 在try…catch…finally块中,当发生异常时只执行相应catch块中的语句,不会执行finally块 C) throw语句中必须指出抛出的异常 D) try块后面必须跟catch块或finally块组合使用,不能单独使用 5.以下关于try…catch…finall语句的叙述中,不正确的是【】。 A) catch块可以有多个B) finally块最多只能有一个 C) catch块和finally块都是可选的D) 可以只有try块,没有catch块和finally 块 6.一般情况下,异常类存放在【】中。 A) System.Exception命名空间B) System.Diagnostics命名空间 C) System命名空间D) Exception命名空间 7.分析下列程序代码: int num; try { num= Convert.ToInt32(Console.ReadLine());} Catch { //捕获异常} 当输入"abc"时,会抛出【】异常。 A) FormatException B) IndexOutOfRangException C) OverflowException D) TypeLoadException 8.用户定义的异常应该从【】类中继承。 A) ArgumentException B) IOException C) SystemException D) Exception 9..NET Framework中,处理异常是很有用的功能。一个try代码块可以有多个catch块与之对应。在多个catch块中,下面【】异常应该最后捕获。 A) Exception B) StackOverflowException C) SystemException D) FormatException 10.下列关于try…catch…finally语句的说明中,不正确的是【】。 A) catch块可以有多个B) finally块是可选的 C) catch块是可选的D) 可以只有try块 11.为了能够在程序中捕获所有异常,在catch语句的括号中使用的类名为【】。

化学 实验现象异常的成因和利用

化学实验现象异常的成因和利用 发表时间:2011-08-19T18:58:08.763Z 来源:《学习方法报.教研周刊》2011年第40期供稿作者:贺伶俐[导读] 利用异常现象,积极开展科学探究活动,从而提高学生探究的水平和创新能力。 湖南省衡阳市祁东县第一中学贺伶俐 化学是一门以实验为基础的自然科学,在化学实验教学过程中,无论是教师课堂演示实验还是学生实验,由于种种原因,有时会出现一些与预料实验结果不相符合的现象, 其中有颜色变化的异常,生成物气味的异常,事故发生的异常等等。下面就高中化学实验现象异常的成因和利用作如下简单的探讨。 一、实验现象异常的成因 1. 因试剂的纯度引起的实验异常 高中化学实验中,不同的实验对其所选择的实验药品纯度的要求也是不同的。限于中学化学实验条件,有些实验往往产生“失常”现象。例如在做甲烷的燃烧实验时,用无水醋酸钠和碱石灰制备CH4气体,在用石英玻璃管燃烧时却发现火焰呈黄色,这是由于制备气体时反应物受热不均匀,局部温度过高所致,使产生的甲烷不纯,含有丙酮等杂质气体。为了避免此现象,可以在实验前将无水醋酸钠和碱石灰充分烘干,研细,混匀,同时要保证碱石灰过量。 2. 因试剂加入顺序的先后引起的实验异常 教师或学生在实验中,若将化学试剂的加入顺序变更以后,有可能引起实验现象不明显甚至得到截然不同的实验结果。例如在做溴与苯酚取代实验时,将苯酚溶液加到浓溴水中,观察不到白色沉淀,而只能见到溶液变成了黄色。若将反应物的加入顺序改为“将1~2滴浓溴水滴入苯酚溶液中”,保证反应中苯酚过量,则预期现象很明显。再如Cu(OH)2的制备是高一的学生实验,若按教材要求的方法和步骤,向盛有CuSO4溶液的烧杯中滴加NaOH溶液,可以产生大量的絮状沉淀,但是对该沉淀进行加热时有时就是看不到黑色CuO。实际上,按如上操作一般生成的沉淀只能是绿色的碱式硫酸铜,致使观察不到Cu(OH)2的受热分解现象,所以建议将步骤改为“向盛有NaOH溶液的烧杯中滴加几滴CuSO4溶液”,确保生成Cu(OH)2过程中NaOH始终是过量的。 3. 药品保存方面引起的实验异常 实验室购置的药品不一定会马上使用,有些药品会因为在实验室保存过程中长时间与空气中的氧气、水蒸气等作用或因保存不当而发生变质,最终导致实验过程中出现异常现象。比如在检验Na2SO3中的SO32-离子时,加入BaCl2溶液后产生大量白色沉淀,加入稀HCl 后,产生可以使石蕊试纸变红的酸性气体。但是无论HCl的量多少,试管中始终会有少量白色沉淀无法溶解。实际上,由于SO32-离子具有较强的还原性,很容易被空气中的氧气氧化成Na2SO4,所以看见有不溶于HCl的沉淀也就不足为奇了。在实际的实验教学中,除了上述原因以外,所用试剂的浓度大小,试剂选用的恰当与否,酸碱介质环境,药品用量的不同,实验温度控制不当,仪器的选用及装置是否合理,以及实验操作者自身基本操作是否过关等方面也会引起实验的异常现象。 二、异常现象的合理利用 实验出现预料之外的情况是时有的事,若教师能抓住实验中的意外,那将大大提高学生的求知欲,并能让学生在神奇的“意外”中产生更深刻的记忆。那么教师应如何做呢? 1. 利用异常现象进行反思性实验教学,逐步使学生养成去思考,会思考的习惯。当学生在实验中出现实验失败或误差较大时,教师应积极引导学生如实记录实验结果,反思失败的原因以找到切实可行的方法改进实验,培养学生严谨的科学态度。教师应多与学生交流,鼓励其对这些异常现象进行探讨。 2.利用异常现象,积极开展科学探究活动,从而提高学生探究的水平和创新能力。在化学教学中,只要学生留心观察实验过程,注意捕捉奇特的变化,就可以发现许多实验异常现象,对这些异常现象进行探究会得到很多重要的发现。教师应根据教学内容,指导学生对见怪不怪的现象着手探究,发现问题。 三、总结 高中化学实验中由于受试剂纯度、试剂添加顺序、药品用量、副反应、温度、催化剂、实验装置等各方面的制约,有时会导致实验现象异常。如果我们教师转换观念,把实验的目的看作是带领学生探究知识,“发现”他们尚未认识的客观事物,并从中学到认知的本领,就不会因为出现异常现象而手忙脚乱,影响教学。作为教师,我们应实事求是地面对实验现实,并引导学生运用已有的知识经验,分析发生异常现象的原因,师生共同研究,改变实验方法和策略,最后把实验做成功。这样虽多占了一些教学时间,影响到上课的进度,但由于学生参与了实验从失败到成功的全过程,在知识、技能、意志、能力等方面得到了提升,是非常值得的。

实验5 异常处理

实验五:java异常处理 实验目的: 1.了解Java异常处理机制的优点 2.了解Java异常的种类 3.掌握异常的捕获与处理 4.掌握异常的抛出 5.熟悉用户自定义异常 6.了解异常处理原则 实验步骤: 一.异常捕获和处理的练习 1. 下面源代码要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。 2. 源代码如下: 3. 编写并完善上述代码,编译运行代码,查看程序执行结果。 ●按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里哪些语句没有被执行,为什么?块外哪些语句可被执行到,为什么? (1) 修改a=0,保持c[2]=200; (2) 保持a=10,修改c[3]=200; (3) 修改a=0,修改c[3]=200。

二.自定义异常的定义和使用的练习 1. 设计两个数求商的程序,并设定一个异常类,判断两数相除时,除数是否为零,当除数为零时将抛给自定义异常类,并输出除数为零。 2. 部分源代码如下: 3. 分析上述代码,将division方法体中的代码补充完整,判断输入的除数是否为0。如果为0,要抛出Di visorIsNotZeroException异常;如果不为0,则计算这个数的商。并按要求创建自定义异常类DivisorIsNotZ eroException。在main方法中已经给出如何输入数据和调用所写方法。 4. 代码完善后,编译运行代码,输入下表数据进行验证,如果抛出异常填“Y”,否则填“N”。 表6-2-1 测试数据 ●分析自定义异常是如何创建的?

import java.util.Scanner; class DivisorIsNotZeroException extends Exception { public DivisorIsNotZeroException(String message) { super(message); } } public class MyExceptionTest { public static double division(double dividend, double divisor) throws DivisorIsNotZeroException { Double d = new Double(divisor); if (0 == https://www.doczj.com/doc/768042629.html,pareTo(0.0)) { throw new DivisorIsNotZeroException("除数为0"); } else { return (dividend / divisor); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入被除数:"); double dividend = sc.nextDouble(); System.out.println("请输入除数:"); double divisor = sc.nextDouble(); try { double result = division(dividend, divisor); System.out.println("计算的商= " + result); } catch(DivisorIsNotZeroException e) { e.printStackTrace(); System.out.println(e.getMessage()); } } }

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