尚学堂Java培训浅析JAVA例外处理
第七章 Java中的异常(例外)
中的异常(例外 第 七 章 Java中的异常 例外 中的异常 例外)
2.程序设计中的三种错误 程序设计中的三种错误---语法错误(编译时的 程序设计中的三种错误 错误)、逻辑错误(运行时的错误)、异常错 误(运行时的错误)。 3.异常错误的特点:程序在运行过程中所发生的 .异常错误的特点: 错误事件;程序员在编程时无法预知它是否会 产生;产生与否取决于用户当时的执行环境。
中的异常(例外 第 七 章 Java中的异常 例外 中的异常 例外)
2、声明所抛出的异常
声明抛出异常 如果在一个方法中生成了一个异常,但是这一方 法并不确切地知道该如何对这一异常事件进行处理, 这时,一个方法就应该声明抛弃异常,使得异常对象 可以从调用栈向后传播,直到有合适的方法捕获它为 止。 声明抛弃异常是在一个方法声明中的throws子句 中指明的。
中的异常(例外 第 七 章 Java中的异常 例外 中的异常 例外)
7.2异常处理
(1)由系统自动处理。 (2)通过 通过try、catch、finally语句块,捕获住该异 语句块, 通过 、 、 语句块 Java 常 。这是积极的异常处理机制。如果Java运行时系统找不到可以捕获异常的
方法,则运行时系统将终止,相应的Java程序也将退
中的异常(例外 第 七 章 Java中的异常 例外 中的异常 例外)
2.抛出异常: 抛出异常: 抛出异常 系统中定义的异常时 1>系统自动抛出的异常(程序中出现系统中定义的异常时 系统中定义的异常时,可以由 系统自动抛出)。 2>对于在函数定义时采用throws声明所不处理的异常类型时,在 其函数体中必须使用“throw 异常事件(对象名)” 来抛出 该种类型的异常事件(程序员自己抛出程序中定义的自己的异 程序员自己抛出程序中定义的自己的异 常事件),以便上一级的调用者来捕获并处理它。 常事件 例如: IOException e=new IOException(); throw e ; 可以抛出的异常必须是Throwable或其子类的实例。下面 的语句在编译时将会产生语法错误: throw new String("want to throw"); ExceptionDemo2.java
第七章 Java中的异常(例外)
• (3)使用throw语句直接抛出异常或使用throws语句 间接抛出异常。(这可通过throws语句来声明所抛出的 异常 )
• 如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃 (throws)异常。这是一种消极的异常处理机制。
•
第 七 章 Java中的异常(例外) Java中的异常(例外)
……
第 七 章 Java中的异常(例外) Java中的异常(例外)
• import java.io.*; • class ExceptionDemo • { • public static void main(String args[]) • { FileInputStream fis=new FileInputStream(“text”); • int b; • while((b=fis.read())!= -1) • { System.out.println(b); • } • fis.close(); • } • }
第 七 章 Java中的异常(例外) Java中的异常(例外)
• finally:它指定一代码块,不管是否有异常产生或是否 finally: 捕获住该异常,程序都从此处继续向后执行。从而达到 提供统一的出口(如关闭文件、清除系统资等)。 • finally • { if(fis !=null) • { System.out.println(“Closing file…”); • fis.close(); • } • else { System.out.println(“FileInputStream not Open !”); • } • }
第 七 章 Java中的异常(例外) Java中的异常(例外)
• 多catch语句块编程要点: • ① c a t c h 语 句 的 顺 序 : 捕获异常的顺序和catch语句的顺序有关,当捕获 到一个异常时,剩下的catch语句就不再进行匹配。因 此,在安排catch语句的顺序时,首先应该捕获最特殊 的异常,然后再逐渐一般化。也就是一般先安排子类, 再安排父类。 • ② try 与catch之间不能有其他语句(不能隔断)。 • try • { } • int x=1; • catch(Exception e) • { }
第6章 Java例外处理
第6章Java例外处理6.1 概述例外就是在程序运行时由代码所产生的不正常状态。
换句话说,例外就是一个运行错误。
在不支持例外处理的计算机语言中,错误必须由人工进行检查和处理,这显然麻烦而低效。
Java语言提供了例外处理机制,为方法的例外终止和出错处理提供了清楚的接口。
例外(exception)也是例外事件(exceptional event)的简称,它是在程序运行中出现的违背正常流向的事件。
许多不同种类的错误可以导致例外,从严重的硬件错误到简单的编程错误。
当在Java方法中发生这样的错误时,方法将创建一个例外对象,并把它交给运行系统处理,运行系统负责找到处理错误的代码并执行之。
例外对象包括例外的信息、类型和错误发生时程序的状态以及对该错误的详细描述。
在Java中,创建一个例外对象并把它送到运行系统叫做抛弃例外。
在抛弃例外后,运行系统将寻找合适的方法来处理例外。
如果产生的例外类与所处理的例外一致,则认为找到了合适的例外处理方法。
如果运行系统找遍了所有方法而没有找到合理的例外处理方法,则运行系统将终止Java程序的运行。
例外处理也叫做捕捉例外。
Java中的每个例外都是一个对象,它是ng包中Throwable类或其子类的实例对象。
Throwable类有两个子类:Exception类和Error类。
Exception类是可以被捕捉并且可能恢复的例外类,也可以继承Exception类生成自己的例外类。
Error类一般被认为是不可恢复和不可捕捉的例外类。
16.2 例外的的类型图6.1 例外类的层次6.2.1 例外类的层次结构Java语言用继承的方式来组织各种例外。
所有的例外都是Throwable类或子类,而Throwable类有直接继承于object类。
Throwable类有两个子类Error类与Exception类。
Exception类又进一步细分为RuntimeException(运行时例外)类和Non-RuntimeException (非运行时例外)类。
尚学堂马士兵java第4章异常处理笔记(精)
尚学堂马士兵java第4章异常处理笔记.txt精神失常的疯子不可怕,可怕的是精神正常的疯子!第四章异常处理java异常的概念:运行期出现的错误1、java异常是java提供的用于处理程序中错误的一种机制2、所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出、数组下表越界、所要读取的文件不存在)。
3、设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。
4、java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给java运行时系统,这个过程称为抛出(throw)异常。
5、当java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。
异常的分类:Throwable:Error和ExceptionError:不能处理系统错误(如java虚拟机错误)Exception:可处理的异常Runtime Exception:一类特殊的异常,如被0除、数组下表炒范围等,其产生比较频繁,处理麻烦,如果显式的声明或捕获将对程序可读性和运行效率影响很大。
因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。
try语句:1、try{...}语句指定了一段代码,该段代码就是一次捕获并处理例外的范围2、在执行过程中,该段代码可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常做相应的处理3、如果没有例外产生,所有的catch代码段都被略过不执行catch语句:1、在catch语句块中是对异常进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象2、在catch中声明的异常对象(catch(SomeException e))封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法获取这些信息3、例如:A、getMessage()方法,用来得到有关异常事件的信息B、printStackTrace()方法,用来跟踪异常事件发生时执行堆栈的内容finally语句:1、finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分以前,承购对长须的状态做一个统一的管理2、无论try所指定的程序块中是否抛出例外,finally所指定的代码都要被执行3、通常在finally语句中可以进行资源的清除工作,如:A、关闭打开的文件B、删除临时文件C、。
java异常处理
吉大计算机学院-柴胜
3
例外
• 在运行时发生的错误 public class ExceptionRaised { 异常情况 public ExceptionRaised() { } public int calculate( int operand1, int operand2) 异常 { int result = operand1 / operand2; return result; 程序突然终止并将控制交 } 给操作系统 public static void main(String[] args) { ExceptionRaised obj = new ExceptionRaised(); int result = obj.calculate(9, 0); System.out.println(result); } }
{ { { { {
dosomething; dosomething; dosomething; dosomething; dosomething;
} } } } }
9
}
吉大计算机学院-柴胜
例外的概念 例外的分类 捕获例外 声明例外 抛出例外 创建自己的例外
吉大计算机学院-柴胜
10
例外的分类
一个例外是由一个对象来代表的,所有的例外都 直接或间接地继承自Throwable类。 在Java类库的每个类包中都定义了例外类,这 些例外类分成两大类:Error类及Exception类, 后者是Java程序中需要大量处理的。 除了Java类库所定义的例外类之外,用户也可 以通过继承已有的例外类来定义自己的例外类,并 在程序中使用(利用throw产生,catch捕捉)。
吉大计算机学院-柴胜 7
例外的概念
Java语言程序设计课程教学辅导技术资料——第9章 异常(例外)处理技术及应用
1.1Java语言程序设计课程教学辅导技术资料——第9章异常(例外)处理技术及应用【教学目标】在本单元中希望您重点了解并掌握如下知识点:Java异常编程规那么,try、catch、finally 语句,声明和抛出异常,用户自定义异常类的编程规那么。
1.1.1Java异常编程技术1、有关异常方面的根底知识〔1〕错误处理在进行程序设计时,错误的产生是不可防止的。
这是任何程序设计语言都要解决的问题。
〔2〕如何处理错误?把错误交给谁去处理?程序又该如何从错误中恢复?〔3〕什么是异常程序在运行过程中所发生的错误事件〔如数组越界、文件操作时未找到文件、除法溢出等〕,而这些错误在设计时不能准确地识别出但又可能会发生或者不会发生;同时它会中断指令的正常执行。
import java.io.*;class ExceptionDemo{ public static void main(String args[]){FileInputStream fis=new FileInputStream("text"); //如果所翻开的文件名不存在的int b; //情况下将产生异常while((b=fis.read()) != -1){ System.out.println(b);}fis.close();}}〔4〕正确理解程序设计中的三种错误语法错误〔编译时的错误〕;逻辑错误〔运行时的错误〕;异常错误〔运行时的错误但取决于执行环境〕。
〔5〕异常的特点〔以“人身保险〞为例加以说明异常的特性〕程序在运行过程中所发生的错误事件程序员在编程时无法预知它是否会产生产生与否取决于用户当时的执行环境。
1.1.2Java中的异常处理1、Java中的异常处理:它是面向对象方式的错误处理方法。
2、非结构化错误处理的缺点〔1〕代码很难阅读、调试和维护〔2〕容易无视错误〔3〕通过函数的返回值来发出错误信息,这易于导致很多错误并且无法提供错误产生的内部细节。
《Java程序设计基础》第7章:例外处理
下面我们通过一个例子来看Throwable的这些方法如何使用。 例7.2 例外方法的使用 ThrowableMethods.java的源程序如下:
public class ThrowableMethods { public static void main(String[ ] args) { try { //try块中只有一抛出例外的语句 throw new Throwable ("Here's my Throwable"); } catch(Throwable e) { System.out.println("Caught Throwable"); System.out.println("e.getMessage(): " + e.getMessage()); System.out.println("e.toString(): " + e.toString()); System.out.println("e.printStackTrace():"); e.printStackTrace(); } } • 该程序输出结果 }
Java允许声明抛出一个并没有发生的例外,编译器能理解我们的要 求,并强迫使用这个方法的用户当做真的产生了那个例外处理
好处:在应用中,可将其作为一个“占位符”使用,这样一来, 以后如果修改这个方法,让它产生实际的例外,而不需修改调用 这个方法的现有代码。定义空例外的例子如下: // Exception是一个已经定
try块的格式如下:
try { 能产生例外的代码段 } try块中的代码段可以是几个简单语句,也可以是方法的调用,也可以是很复杂的结构,如以下的 一种情况都可以: try{ throw new ExceptionName(); } try{ functionA(); //这个方法的调用可能产生例外 } try{ int i=0; for(i=0;i<100;i++){ … } … } catch块是专门用来捕获例外的地方
Java例外处理
第5章 Java例外处理
import java.io.*;
public class ExceptionDemo1 {
public static void main(String args[]) {
int i;
try
{
FileInputStream
FileInputStream("file_in.txt");
第5章 Java例外处理
程序中增加了对例外的处理语句后,就顺利通过 了编译。catch语句的执行顺序是先捕获最特殊的异常, 之后逐渐一般化,因为,IOException是 FileNotFoundException的父类。
try {... }catch(Exception e) { System.out.pritnln("The error is: "+e.getMessage());}
当我们对其编译后运行时,其对应的结果如下:
c:\jbuilder3\java\bin>java Exception Demo The result is10 Exception in thread "main" ng.Arithmetic Exception: /
by zero at Exception Demo.main(Exception Demo.java:5)
第5章 Java例外处理
try { program where … errors may arise } catch (ExceptionClass1 c) {
what to do with it } catch (ExceptionClass2 d) {
what to do with it } finally {...}
深入理解Java异常处理
深入理解Java异常处理第一章:引言异常是在程序执行过程中可能出现的错误或意外情况。
Java异常处理机制允许程序捕获并处理这些异常,从而提高程序的健壮性和可靠性。
本章将介绍为何需要异常处理以及Java异常处理的基本概念。
第二章:Java异常的分类Java异常分为两类:可查异常(checked exception)和运行时异常(runtime exception)。
可查异常是指在编译时必须处理的异常,未处理的可查异常将导致编译错误。
运行时异常是指不强制要求在编译时处理的异常,程序可以选择性地处理或不处理运行时异常。
第三章:Java异常处理的语法Java异常处理通过try-catch语句块来实现。
try块是包含可能抛出异常的代码块,catch块用于捕获和处理异常。
finally块可选,用于释放资源或执行清理操作。
第四章:异常处理的原则异常处理的原则包括:抓住精确异常、避免捕获所有异常、避免空的catch块、避免在finally块中抛出异常等。
同时,应当注意异常处理与业务逻辑的分离,避免将异常处理相关的代码与业务代码耦合在一起。
第五章:捕获异常的多重catch块Java允许在一个try语句块中使用多个catch块来处理不同类型的异常。
catch块按从上至下的顺序匹配异常类型,只有第一个匹配的catch块将被执行。
如果没有匹配的catch块,则异常将被传递到调用者。
第六章:抛出异常通过throw语句,程序可以在任何地方手动抛出异常。
抛出异常的目的是向上一级抛出异常,让调用者处理。
同时,Java允许自定义异常,并提供了Exception和RuntimeException作为异常的基类。
第七章:finally块的作用finally块是可选的,用于执行必须在任何情况下都要执行的代码,例如关闭文件或释放资源。
finally块中的代码无论是正常执行还是发生异常,都会被执行。
第八章:异常处理的最佳实践异常处理的最佳实践包括:在合适的地方捕获异常、提供有意义的异常信息、避免捕获所有异常、合理使用异常层次结构、避免深度嵌套的try-catch块等。
Java程式处理例外状况的方式
44
捕捉例外狀況
這個範例程式內建一個整數陣列, 並請使用者 自行選擇要看陣列中的哪一個數字。 如果使用者指定的數字超出範圍, 就會引發 ArrayIndexOutOf BoundsException 的例外, 在 catch 區塊中, 會顯示這個程式只有 5 個數 字, 並告知使用者指定的數字超出範圍。
18
Java 程式處理例外狀況的方式
例外處理流程 例外類別
19
例外處理流程
當程式執行時發生了例外, Java 會拋出 (throw) 例外, 也就是將例外的相關資訊包裝在 一個例外物件之中, 然後丟給目前執行的方法 來處理, 此時會有兩種狀況: 如果方法中沒有處理這個例外的程式碼, 則轉 向呼叫者 (呼叫該方法的上一層方法) 尋找有無 處理此例外的程式碼。若一直找到最上層的 main() 都沒有處理這個例外的程式碼發生時, 該程式將會停止執行。
45
捕捉多個例外
如果程式中雖有 try/catch 敘述捕捉特定的例 外, 但在執行時發生了我們未捕捉的例外, 會發 生什麼樣的狀況呢?很簡單, 就和我們沒寫任 何 try/catch 敘述一樣, Java 會找不到處理這個 例外的程式, 因此程式會直接結束執行。 我們直接用剛剛的 CatchAndShowInfo.java 來 示範:
27
例外類別
28
例外類別
顧名思義, RuntimeException 類別代表的就 是『執行時的例外』。 此類別下有多個子類別和衍生類別分別代表不 同類型的執行時期例外。 例如前面提過的, 在程式中指定超過範圍的索 引碼時, 就會引發 ArrayIndexOut OfBoundsException 類別的例外。 此類別是 RuntimeException的孫類別, 其父 類別是 IndexOutOfBoundsException。
JAVA教程_第四讲_Java的例外处理和I-O流
4.1 什么是例外例外就是在程序的运行过程中所发生的异常事件,它中断指令的正常执行。
Java中提供了一种独特的处理例外的机制,通过例外来处理程序设计中出现的错误。
4.1.1 例外示例【例4-1】import java.io.*;class ExceptionDemo1{public static void main( String args[ ] ){FileInputStream fis = new FileInputStream( "text" );int b;while( (b=fis.read())!=-1 ){System.out.print( b );}fis.close( );}}查看编译结果【例4-2】class ExceptionDemo2{public static void main( String args[ ] ){int a = 0;System.out.println( 5/a );}}运行结果4.1.2 例外处理机制抛弃(throw)例外:在Java程序的执行过程中,如果出现了异常事件,就会生成一个例外对象。
生成的例外对象将传递给Java运行时系统,这一例外的产生和提交过程称为抛弃(throw)例外两种处理例外的机制:◇ 捕获例外:当Java运行时系统得到一个例外对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一例外的代码。
找到能够处理这种类型的例外的方法后,运行时系统把当前例外对象交给这个方法进行处理,这一过程称为捕获(catch)例外。
这是积极的例外处理机制。
如果Ja va运行时系统找不到可以捕获例外的方法,则运行时系统将终止,相应的Java程序也将退出。
◇ 声明抛弃例外:如果一个方法并不知道如何处理所出现的例外,则可在方法声明时,声明抛弃(throw s)例外。
这是一种消极的例外处理机制。
4.1.3 例外类的层次在jdk中,每个包中都定义了例外类,而所有的例外类都直接或间接地继承于Throwab le类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京尚学堂提供
捕获例外:
Java产生例外对象后,会去寻找能够处理此例外的方法并交之处理,这一过程成为捕获(catch)。
若找不到,运行时系统将终止
抛弃例外:
一个方法若不知道如何处理出现的例外,可声明抛弃(throws)
jdk中,每个包都定义了例外类,所有的例外类都直接或间接继承于Throwable类。
java中的例外类可分为两大类:
error
exception
运行时例外:
继承于RuntimeException的类都属于运行时例外,如算数(除零),数组越界等,由于例外产生的位置是未知的,java编译器允许程序员在程序中不对它们作出处理。
非运行时例外:
除运行时例外,便是非运行时例外,如FIleNotFindException(文件未找到例外),java编译器要求对这种例外必须作出处理,捕获例外或抛弃例外
例外的处理
捕获例外
通过try-catch-finally语句实现
try:try语句所限定的代码块在执行过程当中可能会产生例外对象并抛弃。
catch:每个try块可以伴随一个或多个catch语句,用于处理try块中所生成的例外事件。
catch语句只需一个形参指明它所能够捕获的例外类型,这个类必须Throwable的子类,运行时系统通过参数值把被抛弃的例外对象传递给catch块。
类Throwable提供了getMessage()方法:得到异常的相关信息,printStackTrace()用来跟踪事件发生时执行堆栈的内容。
catch语句的顺序,第一个例外捕获到后,剩下catch不再捕获。
故catch安排的顺序应该为从特殊到一般。
即先安排子类在安排父类。
finally:为统一的出口,无论有无例外,都会执行。
抛弃例外:
如果一个方法中生成了一个例外,但是这一方法并不确切地知道该如何处理这一异常事件。
此时,这一方法应当声明抛弃例外,使得例外对象可以从调用栈向后传播,直到有合适的方法捕获它为止。
声明抛弃:
声明抛弃例外实在一个方法声明中的throws子句中指明的。
public int read() throws IOException {
...
}
抛出例外:
抛出例外就是产生例外对象的过程。
首先生成例外对象,由虚拟机或者某些类的实例生成。
通过throw语句实现。
IOException e = new IOException();
throw e;
【最新文档更新请加入尚学堂】。