第7讲 异常处理

合集下载

07第七章 游标和异常处理

07第七章 游标和异常处理
第七章 游标和异常处理
By esoft_zsx@ Version 3.0 Oct 2009
Oracle 10g
1-1 Copyright © ESOFT, 2009. All rights reserved.
课程内容
• • • • 游标的概念 隐式游标 显式游标 异常处理
Oracle 10g
Oracle 10g
1-12 Copyright © ESOFT, 2009. All rights reserved.
下面对这两种格式进行说明: 第一种格式中的变量名是用来从游标中接收数据 的变量,需要事先定义。变量的个数和类型应与 SELECT语句中的字段变量的个数和类型一致。 第二种格式一次将一行数据取到记录变量中,需 要使用%ROWTYPE事先定义记录变量,这种形式使用 起来比较方便,不必分别定义和使用多个变量。 定义记录变量的方法如下: 变量名 表名|游标名%ROWTYPE; 其中的表必须存在,游标名也必须先定义。
Oracle 10g
1-19 Copyright © ESOFT, 2009. All rights reserved.
DBMS_OUTPUT.PUT_LINE(v_ename||','||v_sal); END LOOP; CLOSE emp_cursor; END; 执行结果为: KING,5000 SCOTT,3000 FORD,3000 PL/SQL 过程已成功完成。 说明:该程序在游标定义中使用了ORDER BY子 句进行排序,并使用循环语句来提取多行数据。
Oracle 10g
1-21 Copyright © ESOFT, 2009. All rights reserved.
FOR Emp_record IN emp_cursor LOOP DBMS_OUTPUT.PUT_LINE(Emp_record.empno|| Emp_record.ename); END LOOP; END;

Java程序设计课件:异常处理

Java程序设计课件:异常处理
一般不声明抛出超过3个的异常,如果发生这种情况,也要通过 代码重构或将多个异常映射到一个通用异常中来解决该问题, 或者在方法内部自行消化部分内部异常。
将异常组织成一个对象树结构,有利于保持方法定义的稳定性, 同时也给方法的使用者提供了以不同粒度处理异常的自由。
17/22 2023/12/28
7.3 自定义异常
Java程序设计
异常处理
本章主要内容
异常的概念 处理异常 自定义异常 小结
2023/12/28
2/22
异常的概念
凡是在运行时进入的不正常状态都称为错误。 这些错误根据错误的严重性可以分为两类:
一类是致命性的错误,它们的出现可能会导致系 统崩溃,并且程序员并不能编写程序解决所出现 的问题;
非法访问异常,如试图访问非公有方法。
实例化异常,如实例化抽象类。 中断异常。 输入输出异常。
找不到指定的字段异常。
找不到指定方法异常。
打印机错误报告异常。 运行时异常。 SQL语句执行错误异常。 线程阻塞超时异常。 执行转换算法异常。
2023/12/28
7/22
常见的RuntimeException类的子类
2. 抛出的异常对象如果属于 catch括号中要捕获的异常类 ,则catch会捕获此异常,且 为该异常创建一个引用名,然 后执行catch程序块中的异常 处理程序。其中“……”表示 多个catch程序块,每个catch 程序块捕获一种异常。
3. 无论try程序块是否捕获到 异常,或者捕获到的异常是否 与catch() 括号内的异常类型 相同,最后一定会运行finally 块里的程序代码。
} }
11/22 2023/12/28
异常捕获策略
尽可能只捕获指定的异常,而不是捕获多个异常的公共父 类,除非确信这个异常的所有子类对程序来说是没有差别 的,可以同样的方式来处理它们,同时也要考虑该异常将 来可能的扩展。只要有可能,就不要捕获 ng.Exception或ng.Throwable。

A-380故障诊断及异常处理(第7章)(20090527)

A-380故障诊断及异常处理(第7章)(20090527)

第七章故障诊断及异常处理
7.1故障现象及对策
当变频器发生异常时,LED数码管将显示对应故障的功能代码及其内容,故障继电器动作,变频器停止输出,发生故障时,电机若在旋转,将会自由停车,直至停止旋转。

A380可能出现的故障类型如表7-1所示。

用户在变频器出现故障时,应首先按该表提示进行检查,并详细记录故障现象,需要技术服务时,请与本公司售后服务与技术支持部或我司各地代理商联系。

表7-1故障报警内容及对策
7.2故障记录查询
本系列变频器记录了最近6次发生的故障代码以及最后1次故障时的变频器运行参数,查寻这些信息有助于查找故障原因。

故障信息全部保存于P6组参数中,请参照键盘操作方法进入P6组参数查寻信息。

7.3故障复位
变频器发生故障时,要恢复正常运行,可选择以下任意一种操作:(1)当显示故障代码时,确认可以复位之后,键。

(2)将X1~X8中任一端子设置成外部RESET 输入(P4.00~P4.07=17)后,与COM
端闭合后断开。

(3)切断电源。

异常处理PPT课件

异常处理PPT课件

规程是否得 到遵守?

形式不可用
操作人员理解有 困难
不适合实际操作
或不能产生好的 结果
重写规程以 符合当前的 工作方法
使用图标或数据 等重写规程以易
于理解
从技术角度重新 对规程进行回顾
规程是否得

到遵守?

工作条件不
使用规程或复杂设
适合
备时容易出错
改善工作条 件
改善工作方法,引 入傻瓜型设备装置
开始
发现和报告异常
采取纠正性行动来消除症 状
异常处理流程
制定对策 执行对策 跟踪对策的执行
记录异常
跟踪对策的有效性
确定异常的本质或根本原因
4
对发生的异常进行阶段性回 顾以检测长期性问题
确定项目/年度目标来对 长期性问题进行优先性
排序
使用PDCA来执行项目/ 年度行动计划
结束
确定根本原因
原因
X
症状
• 停机时间超过20分钟; • 所有事故\事件; • 断货超过5 %;
• 损耗超过xx %;
• 盘点差异高于2%。
当系统得到实施且发生的异常减少时,触发条件的标准可 以变得“更为严格”!
开始
发现和报告异常
1
采取纠正性行动来消除症状
记录异常
确定异常的本质或根本原因
异常处理流程
制定对策 执行对策
跟踪对策的执行
采取纠正性行动来消除症状
2
记录异常
跟踪对策的执行 跟踪对策的有效性
确定异常的本质或根本原因
对发生的异常进行阶段性回 顾以检测长期性问题
确定项目/年度目标来对 长期性问题进行优先性
排序
使用PDCA来执行项目/ 年度行动计划

第7章异常处理

第7章异常处理

Error和Exception
1.Error Error用来表示编译和运行错误,如程序进入了死循环、内存溢出等。
Error只能在编译阶段解决,运行时程序本身无法解决,只能依靠其它程序的 干预,否则会一直处于非正常状态。Error处理一般由系统承担,Java本身不 提供相应的Error处理机制。
2.Exception Exception用来表示由程序活动所导致的错误,如运算时除数为0、打开
at Throw1.main(Throw1.java:5)
上例中产生了一个数组下标越界异常,它是RuntimeException的一个子 类,它是Java中的一个基本异常,要想对各种异常类有个全面的了解,需要 去查看Java的JDK Documentation。
我们可以看到,异常产生之后程序终止了执行,并且输出了相应的异常 信息。此例中产生的异常有Java虚拟机自动抛出。
捕获和处理异常
程序发生异常时,会生成一个异常对象,这个异常对象会在方法内部被 抛出,它假设异常将被异常处理程序捕获。如果程序不捕获异常,它就要被 JVM捕获,这个方法将在抛出异常的过程中结束。要是不希望方法就此结束, 可以在方法内部设置一个特殊的块来监视可能产生异常的代码,然后让程序 来捕获并处理异常对象从而不会影响其他语句的执行。在Java中,提供了try 和catch语句来捕获和处理一个或多个异常。语法格式如下:
}
抛出异常
我们可以通过throw语句手动抛出异常。其基本语法格式如下: throw Obj;
其中throw是关键字,Obj是创建的异常类型的对象。在throw语句中同 样是使用new创建异常类型的对象。例如:
class Throw2{ public static void main(String args[]){ try{ System.out.println("Before throw!"); throw new ArithmeticException(); } catch(ArithmeticException e){ System.out.println("ArithmeticException caught!"); } System.out.println("End up!"); }

第7章Java异常处理

第7章Java异常处理

try
产生异常对象
异常类型匹配
catch
继续执行
try/catch 块后的代码段
try/catch块
import java.util.Scanner; 输入:2 0 public class Test1 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入两个整数:"); try{ int x=input.nextInt(); int y=input.nextInt(); int result=x/y; System.out.println("相除的结果为:"+result); System.out.println("程序结束!"); }catch(ArithmeticException e){ System.out.println("除数不能为0!"); } } 除数不能为0! 控制台输出 }
catch
try/catch 块后的代码段
try/catch块
import java.util.Scanner; 输入:10 2 public class Test1 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入两个整数:"); try{ int x=input.nextInt(); int y=input.nextInt(); int result=x/y; System.out.println("相除的结果为:"+result); System.out.println("程序结束!"); }catch(ArithmeticException e){ System.out.println("除数不能为0!"); } } 相除的结果为5 控制台输出 } 程序结束! 算术异常

异常处理的方法及常见错误

异常处理的方法及常见错误

异常处理的方法及常见错误一、引言在编写程序的过程中,我们难免会遇到各种意料之外的错误情况。

例如,网络连接中断、用户提供无效的输入、文件读取失败等等。

这有时可能会导致应用程序崩溃或者产生错误结果,影响程序的执行效果和用户体验。

为此,异常处理显得尤为重要。

异常处理是一种有效的、规范的、灵活的代码结构,能够让程序在遇到错误情况时以一种清晰的方式进行处理,从而提高应用程序的可靠性和健壮性。

本文将介绍异常处理的方法及常见错误,在分析各种异常处理的方法以及常见错误之后,让读者更深入的了解异常处理的概念,为读者介绍异常处理的几种常见方法、异常处理的原则、如何确定异常类型和异常的处理方法等知识点。

二、异常处理的方法通常情况下,我们将异常分为两类:编译时异常和运行时异常。

编译时异常通常是由语言本身的规范造成的,例如,不正确的文件名、无效的数据类型等。

而运行时异常则通常由程序的运行环境和输入数据的错误造成的,例如,数组越界、除零错误等等。

基于这两种常见的异常类型,下面将介绍几种常见的异常处理方法:1. try-catch语句try-catch语句是一种非常常见的异常处理方法,在程序运行时,如果try块中出现了异常的情况,程序不会崩溃,而是自动跳转到catch块中进行异常处理。

下面来看一个简单的例子:try {//这里是可能出现异常的代码块} catch (ExceptionType e) {//异常处理代码}在这个例子中,try语句块是一段可能抛出异常的代码。

如果在执行try块时发生了错误,就会跳转到catch块中,其中ExceptionType 代表抛出的异常类型,e是一个指向异常对象的指针。

catch块中的代码则是用来具体处理异常的逻辑。

需要注意的是,在使用try-catch语句处理异常时,我们需要确定具体的异常类型,并在catch块中进行相应的处理。

同时,在使用try-catch语句块的过程中,要注意异常处理代码的构成,尽量避免让异常处理代码过于冗余或过于细节化。

异常处理的名词解释

异常处理的名词解释

异常处理的名词解释异常处理是指在计算机程序运行过程中,出现错误、异常或特殊情况时系统的处理方式和方法。

它是保证系统稳定运行和提高程序可靠性的重要手段。

异常处理主要包括异常检测、异常处理、异常传递和异常捕获等环节。

本文将对这些名词进行解释,并探讨异常处理在软件开发和系统运行中的重要性。

异常检测是异常处理的第一步,它通过检测系统运行过程中出现的错误或特殊情况来确定是否出现异常。

在编写程序时,可以利用条件语句、断言语句或专门的异常检测机制来实现异常检测。

当系统运行中检测到异常,会触发相应的异常处理机制。

异常处理是指系统对于检测到的异常情况的处理方式和方法。

在程序中,可以使用try-catch语句块来实现异常处理。

当异常发生时,程序会跳出当前的执行流程,进入catch块来处理异常,并进行相应的错误处理、错误日志记录等操作。

异常处理可以帮助开发人员定位并解决错误,同时也能够提高用户体验和系统的健壮性。

异常传递是指异常在程序中的传递过程。

当异常在某个方法或代码块中发生时,可以选择将异常传递给调用该方法或代码块的上一层,由上一层再进行相应的异常处理。

通过异常传递,可以将异常的处理推迟到更高层次的代码中,提高代码的可读性和可维护性。

异常捕获是异常处理的重要环节,它指的是捕获异常并进行相应的处理。

在程序中,可以使用catch语句来捕获异常,并在捕获到异常后执行特定的处理逻辑。

异常捕获可以帮助开发人员在异常发生时及时响应,防止异常导致系统崩溃或数据丢失等严重后果。

异常处理在软件开发和系统运行中起着重要的作用。

首先,它可以帮助开发人员捕获并解决程序中的错误,提高程序的稳定性和可靠性。

其次,异常处理可以提高系统的可维护性和可读性。

当程序中出现异常时,通过异常处理,开发人员可以快速定位并解决问题,提高代码的可读性和可维护性。

此外,异常处理也可以提升用户体验。

通过合理的异常处理机制,可以向用户提供友好的报错信息,增强系统的用户体验。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.1 什么是异常
【例5-1】文件操作将产生异常 // Exception1.java import java.io.*; class Exception1 { public static void main(String args[]){ FileInputStream fis =new FileInputStream("text.txt"); int b; while((b=fis.read())!=-1) { System.out.print(b); } fis.close(); } }
第7讲 Java的异常处理
1
主要内容
5.1 什么是异常 5.2 异常处理机制 5.3 异常的处理
5.4 创建用户异常类
5.1 什么是异常


异常(Exception)也叫例外。在Java编程语言中,异常就是程 序在运行过程中由于硬件设备问题、软件设计错误、缺陷等 导致的程序错误。在软件开发过程中,很多情况都将导致异 常的产生,例如: (1) 想打开的文件不存在; (2) 网络连接中断; (3) 操作数超出预定范围; (4) 正在装载的类文件丢失; (5) 访问的数据库打不开; 可见,在程序中产生异常的现象是非常普遍的。在Java编程 语言中,对异常的处理有非常完备的机制。异常本身作为一 个对象,产生异常就是产生一个异常对象。这个对象可能由 应用程序本身产生,也可能由 Java 虚拟机产生,这取决于 产生异常的类型。该异常对象中包括了异常事件的类型以及 发生异常时应用程序目前的状态和调用过程。请看下面产生 异常的例子。
(5) Java系统内部异常InternalException JVM抛出的异常。 (6) 类型不符合异常 IncompatibleTypeException int n=12345; String s=(String)n; (7) 内存溢出异常OutOfMemeoryException (8) 没有找到类定义异常 NoClassDefFoundException aClass aa=new aClas(); //但aClass类未定义。 (9) 空指针异常 NullPointerException int b[ ]; b[0]=99; //没有实例化,就访问,将产生空 指针。
其中包括了运行时异常和非运行时异常。
5.2.2 异常类的类层次
常见的运行时异常如下:
(1) 类型转换异常 ClassCastException String strName=new string(“123”); int nNumber=(int)strName; (2) 数组超界异常 ArrayIndexOutBoundsException int[] b=new int[10]; b[10]=1000; (3) 指定数组维数为负值异常 NegativeArraySizeException b[-1]=1001; (4) 算术异常 ArithmeticException int b=0; a=500/b;
5.1 什么是异常
当编译这个程序时,屏幕上会输出下面的信息: c:\Java\cha5>javac Exception1.java Exception1.java:5: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown FileInputStream fis = new FileInputStream("text.txt"); ^ Exception1.java:7: unreported exception java.io.IOException; must be caught or declared to be thrown while((b=fis.read())!=-1) { ^ Exception1.java:10: unreported exception java.io.IOException; must be caught or declared to be thrown fis.close(); ^ 3 errors
5.1 什么是异常
程序的编译和运行结果如下: c:\Java\cha5>javac Exception2.java c:\Java\cha5>java Exception2 Java Visaul Basic C++ Exception in thread "main" ng.ArrayIndexOutOfBoundsException: 3 at Exception2.main(Exception2.java:8) 上面的例子编译可以通过,但运行时出现异常信息被抛出。在 其循环被执行四次之后,数组下标溢出,程序终止,并带有 错误信息,就象前面所示的程序那样。
5.1 什么是异常
【例 5-2】数组下标超界的例子 // Exception2.java public class Exception2{ public static void main (String args[]) { String langs [] = {"Java","Visaul Basic","C++"}; int i = 0; while (i < 4) { System.out.println (langs[i]); i++; } } }
5.2异常处理机制
5.2.1 Java的异常处理机制 5.2.2 异常类的类层次 5.2.3 Throwable类的常用方法
5.2.1 Java的异常处理机制
在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常 对象。这个对象可能是由正在运行的方法生成,也可能由Java虚拟机生成, 其中包含一些信息指明异常事件的类型以及当异常发生时程序的运行状态 等。 Java语言提供两种处理异常的机制: (1)捕获异常 在Java程序运行过程中系统得到一个异常对象时,它将会沿着方法的 调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常 的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程 称为捕获(catch)异常。这是一种积极的异常处理机制。如果Java运行时系 统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也 将退出。 (2)声明抛弃异常 当Java程序运行时系统得到一个异常对象时,如果一个方法并不知道如何 处理所出现的异常,则可在方法声明时,声明抛弃(throws)异常。
5.1 什么是异常
【例 5-3】被0除的例子 // Exception3.java class Exception3{ public static void main(String args[]){ int a=0; System.out.println(5/a); } } 我们编译这个程序得到其字节码文件,然后运行它,屏幕上的显示如下: c:\Java\cha5>javac Exception3.java c:\Java\cha5>java Exception3 Exception in thread "main" ng.ArithmeticException: / by zero at Exception3.main(Exception3.java:5) 因为除数不能为0,所以在程序运行的时候出现了除以0溢出的异常事件。
5.1 ห้องสมุดไป่ตู้么是异常
在上面的三个例子中,我们都遇到了异常。屏幕上所显示 的信息 java.io.IOException、 java.io.FileNotFoundException、 ng.ArrayIndexOutOfBoundsException 以及ng.ArithmeticException 分别指明了异常的类型以及异常所在的包。同时我们也 可以看到,对于某些异常,在程序中必须对它进行处理,否 则编译程序会指出错误(如例5-1)。但对另一些异常,在程序 中可以不做处理,而直接由运行时系统来处理(如例5-3)。在 下节中,我们将详细了解这两类异常,以及在程序中如何处 理这两类异常。
5.2.2 异常类的类层次
常见的非运行时异常如下: (1) ClassNotFoundException :找不到类或接口所产生的异常 (2) CloneNotSupportedException:使用对象的 clone 方法但无 法执行 Cloneable 所产生的异常。 (3) IllegalAccessException :类定义不明确所产生的异常。例如: 类不为 public ,或是包含一个类定义在另一个类库内。 (4) IOException :在一般情况下不能完成I/O操作所产生的异常。 (5) EOFException: 打开文件没有数据可以读取所产生的异常 (6) FileNotFoundException :在文件系统中,找不到文件名称或 路径所产生 (7) InterruptedIOException:目前线程等待执行,另一线程中断 目前线程I/O运行所产生的异常 在Sun公司提供的各种API包中,如java.io,,java.awt 等,都提供不同情况下可能产生的异常。由于异常的种类非常 多,需要读者实际运用中逐渐掌握。
5.2.2 异常类的类层次
前面已经提到,Java是采用面向对象的方法来处理错误的,一个异 常事件是由一个异常对象来代表的。这些异常对象都对应于类 ng.Throwable及其子类。下面我们就来看一下异常类的层次。 在java类库的每个包中都定义了自己的异常类,所有这些类都直接 或间接地继承于类Throwable。图5-1列举了一些异常类并指明了它们的 继承关系。 从图5-1可以看出,Java中的异常事件分为两大类。一类继承于类Error, 它的继承关系如下: ng.Object ng.Throwable ng.Error 常见的错误类有AnnotationFormatError, AssertionError, AWTError, LinkageError, CoderMalfunctionError, FactoryConfigurationError, ThreadDeath, VirtualMachineError, TransformerFactoryConfigurationError等,包括动态链接失败、线程死锁、 图形界面错误、虚拟机错误等,通常Java程序不应该捕获这类异常,也 不会抛弃这种异常。
相关文档
最新文档