Java基础之异常处理(五)

运行期出现的错误,非编译错误,观察错误的名称和行号最重要。

Java异常是Java提供的用于处理程序中错误的一种机制。所谓错误是指程序运行的过程中发生的一些异常事件(如:除0溢出,数组下表越界,所要读取的文件不存在)。

为什么需要处理异常?

当异常发生时,会阻断程序运行,且可能无法获知被阻断的原因或者产生不可预见的结果。设计良好的程序应该在异常发生时提供处理这些错误的方法。

异常处理过程:

定义过程-声明异常:声明该方法有可能抛出的异常,throws 异常类名。

定义过程-抛出异常:设置条件判断,满足条件时,构造并抛出异常对象,throw new 异常类的构造方法。

调用过程-抛出异常(throw):Java程序的执行过程中出现异常事件,可以生成一个异常类对象,该异常类对象封装了异常事件的信息并将被提交给Java运行时系统。

捕获异常(catch):当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理。

异常类:根基类:Throwable,子类:Error,Exception,RuntimeException.

Error:称为错误,由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。

Exception:所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显示的声明或捕获。

RuntimeException:一类特殊的异常,如被0除、数组下标越界,其产生比较频繁,处理麻烦,如果显示的声明或捕获将会对程序可读性和运行效率影响很大,因此由系统自动检测并将它们交给缺省的异常处理程序,用户可不必对其处理。

异常的捕获和处理:try{包含可能产生例外的代码}catch(异常类名 变量名){异常处理代码}finally{无论是否发生例外都会被执行},try代码段后跟有一个或者多个catch代码段。如果没有例外产生,则所有的catch代码段都被略过不执行。

异常对象封装了异常事件发生的信息,在catch语句块中可以使用异常对象的一些方法获取这些异常信息。 比如:

getMessage()方法,用来得到有关异常事件的信息。

printStackTrace()方法,用来跟踪异常事件发生时执行堆栈的内容。

finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其它部分以前,能够对程序的状态作统一的管理。通常finally语句中可以进行资源的清除工作:关闭打开的文件,删除临时文件,关闭数据库连接。

例如,文件输入流,每次读入一个字符,使用一个int型变量接收,并打印出来。输入文件默认需放在项目根目录下,代码如下:

import java.io.FileInputStream;

import java.io.IOException;

public class TestExceptionCatch {

public static void main(String[] args) {

// TODO Auto-generated method stub

FileInputStream in=null;

try{

in=new FileInputStream("myfile.txt");

int b;

b=in.read();

while(b!=-1){

System.out.print((char)b);

b=in.read();

}

}catch(IOException e){

System.out.println(e.getMessage());

e.printStackTrace();

}finally{

try

{

if (in!=null)

{

in.close();

}

}

catch (IOException e)

{

throw new RuntimeException("关闭失败");

}

}

}

}

原则:

1.如果一个try语句块中,基类异常的捕获语句写在子类异常捕获语句的上面,会报编译错误。即子类异常必须写在基类异常处理之前,当该类异常发生时,由子类来捕获并处理该异常,基类异常不做处理,即基类catch块代码不会被执行。

2.重写方法需要抛出与原方法所抛出异常类型一致的异常或者不抛出异常。

时间: 2024-11-01 11:01:40

Java基础之异常处理(五)的相关文章

Java基础学习第五天——方法与数组

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.24 lutianfei none 第三章Java基础语法 方法 方法就是完成特定功能的代码块,即函数. 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2-) { 函数体; return 返回值; } 详细解释: 修饰符,目前就用public static,后详解. 返回值类型:就是功能结果的数据类型. 方法名:符合命名规则即可,方便我们的调用. 参数: 实际参数:就是实际参与运算的.

No_16_0224 Java基础学习第五天

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.24 lutianfei none 第三章Java基础语法方法方法重载数组Java中的内存分配数组操作常见的两个小问题数组练习 第三章Java基础语法 方法 简单的说:方法就是完成特定功能的代码块 在很多语言里面都有函数的定义 函数在Java中被称为方法 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2-) { 函数体; return 返回值; } 详细解释: 修饰符,目前就用publi

Java基础--第二十五天

TCP协议: Socket类 构造方法: TCP程序,必须先开服务器端 成员方法 服务器端程序: 创建服务器端Socket对象: 监听连接: 获取输入流,并显示: 释放资源 ServerSocket类 网络编程 网络编程+反馈 大融合[所有的Java基础融合为一个实例] 正则表达式: 符合某种规则的字符串,常用于校验 规则: Pattern类 A:字符 x:任意字符表示任意字符本身 \\:反斜线字符[转义字符] \r:回车 \n:换行 B:字符类 [abc]:表示a,b,c任意字符一次 [^ab

一天一个Java基础——通过异常处理错误

<Thinking in Java>上对这章的讲解不少,可见重要性,学习和总结一些主要的记录下来. 一.创建自定义异常 1 package Exception; 2 3 class SimpleException extends Exception{} 4 5 public class InheritingException{ 6 7 public void f() throws SimpleException { 8 System.out.println("Throw Simple

java基础篇---异常处理

认识异常 异常时导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以在程序的设计中必须考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序的正常执行,在java使用一种称为异常处理的错误捕获机制处理. 为了能在程序中处理异常情况,必须研究程序中可能会出现的错误和问题 用户输入错误() 设备错误 物理限制(磁盘满了,) 代码错误(程序方法有可能无法正常执行) 处理异常 异常处理的简单格式 如果在try语句块中的任何代码抛出一个在catc

JAVA基础之异常处理

java的异常处理机制可以使程序中的异常处理代码与正常业务代码分离,保证程序代码更加优雅,并可以提高程序的健壮性. 在try{} catch(){} 异常处理机制中,try发生的异常对象会被提交到java的运行环境,叫做抛出异常,运行环境会寻找处理该异常的catch块,如果找到,则称为捕获异常,若没有找到合适的catch,则运行时环境终止,程序也将终止 Error和Exception: java把所有的非正常情况分为两种类型,Error(错误)和Exception(异常),他们都继承Throwa

Java基础(四)-异常处理机制及其设计

本篇主要是记录自己所理解的Java异常处理机制(基于jdk1.7)以及怎么去处理和设计异常.还记得当初学习Java异常这块的时候都没怎么注意它的用途,以为就是简单的处理下异常,我避免程序出现这样错误就行了(当初真的很懵懂很天真).当踏入社会工作后才知道一个好的异常处理框架是有多重要,比方说当你的项目投入使用的时候,当程序出错如何快速的定位到问题的根源(出了什么错,在哪出的错,为什么出错),这就跟你的异常处理的好坏有关了(当然离不开你的日志处理).在有效使用异常的情况下,异常类型会回答报的什么错,

Java基础教程——异常处理详解

异常处理 好程序的特性 可重用性 可维护性 可扩展性 鲁棒性 |--|--Robust的音译 |--|--健壮.强壮之意 |--|--指在异常和危险情况下系统依然能运行,不崩溃 Java中,写下如下代码: public class TestException { public static void main(String[] args) { int a = 10 / 0; System.out.println("-END-"); } } 代码运行到"10 / 0"

【BigData】Java基础_异常处理

概念 在我们写程序的时候,当遇到异常,整个程序就中断了,导致程序奔溃,这就会影响用户体验度,为了让程序在运行的的过程中不出现这种问题,当程序报错时候,我们把这种错误先自行处理了,让程序保持正常运行. 例如:一个求商的程序,除数是用户输入,那么用户输入的除数可能是千奇百怪的,可能是数字,也可能是字符,还可能是0,如果输入字符或者0,那么就报错了,这时候程序就中断了,无法继续执行后面的内容,所以就得异常处理了. 注意:异常处理有2种方法 (1)使用try-catch结构来捕获异常 (2)下层方法可以