第5章异常处理与输入输出

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
……
例:请显示c盘中的所有内容
import java.io.*; class ListFileName{
public static void main(String[]args){ String[]allname; File myfile1=new File("c:\\"); if(myfile1.isDirectory()) {
(2) Java的异常类分为 运行时异常类:继承RuntimeException的类 非运行时异常类:除RuntimeException类及其 子类外
见教材p131
2.异常处理方式 (1)系统自动处理
一旦程序中出现异常,运行时系统将会自动产生一个 相应的异常类对象,每一个异常事件都由一个异常对 象来描述。
} } 本程序若输入num值为0,则产生ArithmeticException
异常类对象
(2)程序员主动干预异常
运用异常处理机制对可能出现的异常进行干预, 干预手段两种:
a.使用try…catch…finally结构对异常进行捕 获和处理
b.通过throw或throws关键字将异常抛出。
a.使用try…catch…finally结构对异常进行捕获和处理
}
(b)利用throws关键字间接抛出异常 在方法的声明处,利用throws关键字抛出异
常。
语法格式如下: 方法名() throws 异常类[异常类1,异常类2,……]
例:ExceptionDemo类中的DivMethod方法计算100/num 的值,并在该方法中抛出异常。 MyDemo类调用 DivMethod方法时,捕获其抛出的异常。
输入流
Java程序
输出流
控制台 磁盘文件 打印机 ......
1.Java I/O系统
Java程序的输入和输出是由Java I/O系统负 责处理的
I/O类库位于java.io包中
2.几个重要的居于java.io包中类层次顶部的流类

说明
File
支持文件与目录操作的类
InputStream
字节输入流类
System.out.println(allname[i]); } } else
System.out.println("不存在该目录"); }
例:创建文件和目录
import java.io.*; class CMFileObject {
义的异常类名。toString方法可返回上面的信息内

例:直接抛出异常以处理分母输入为0的情况 public class ExceptionDemo { static int num;
public static void main(String args[]) { try{ num= Integer.parseInt(args[0]); if (num==0 ) throw new ArithmeticException("你应该输入非0整数值!"); System.out.println("100整除 "+num+"="+100/num);
自定义的异常: class InputException extends Exception{
public InputException(){} public InputException(String str){
super(str);}}
public class Scores { public static void main(String args[]) { try { float score; System.out.println("请输入成绩值!") score=Math.abs(Float.parseFloat(args[0])); if(score<0||score>=100) { throw new InputException();} System.out.println("你输入的成绩值:"+score);} catch(ArrayIndexOutOfBoundsException e) { System.out.println("你还没有输入呢,请输入成绩值!");} catch(NumberFormatException e) { System.out.println("你输入的是字符,请输入数值!");} catch(InputException e){ System.out.println("你输入的数值不在指定范围内,请输 入[0,100]之间的值!");} } }
输入\输出
数据的输入输出是程序的主要任务。 进行程序设计时,有时需将结果保存到指定
的文件、数据库中等等。
Java语言的输入输出数据是以流(Stream)的形 式出现的。
流分为输入流(Input Stream)和输出流(Output Stream)
输入流和输出流的流向
键盘 磁盘文件 内存 ......
OutputStream
字节输出流类
Reader
字符输入流类
Writer
字符输出流类
RandomAccessFile 随机访问文件类
3.文件管理类(File)
Java中的File类是专门对目录和文件进行管理 的类
对目录的管理包括建立目录、删除目录、重 命名目录以及建立与删除临时目录;
对文件的管理包括建立空文件、删除文件、 重命名文件、获取或修改文件的各种属性以 及建立与删除临时文件。
三、自定义异常
语法结构: class 自定义异常类名 extends Exception(Throwable) {
public 自定义异常类名 (){…} public 自定义异常类名 (String str){super(str);} }
用throw语句来抛出自定义的异常类,
例:要求在命令行后输入学生成绩,成绩值在 [0,100]之间。当输入的数值不在[0,100]之间时, 直接抛出自定义的异常类InputException类 。同 时要求捕获所有可能出现的异常。
}
}
public class MyDemo { public static void main(String args[])
{ try {
int n; n= Integer.parseInt(args[0]); ExceptionDemo.DivMethod(n); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("你还没有输入呢,请输入整数值!");} catch(NumberFormatException e) { System.out.println("你输入的是小数或字符,请输入整数 值!");} catch(ArithmeticException e){ System.out.println("你输入的是0,请输入非0整数值!");} } }
public class ExceptionExample { static int num;
public static void main(String args[]) { try{ num= Integer.parseInt(args[0]); System.out.println("100整除"+num+"="+100/num); } catch(ArrayIndexOutOfBoundsException e){ System.out.println("你还没有输入呢,请输入整数值!"); } catch(NumberFormatException e) { System.out.println("你输入的是小数或字符,请输入整数值!"); } catch(ArithmeticException e){ System.out.println("你输入的是0,请输入非0整数值!"); } }
}
b.通过throw或throws关键字将异常抛出 (a)利用throw关键字直接抛出异常 在编写程序的过程中,对可能会引发异常的地方 直接使用throw语句自行抛出,当直接利用throw 语句抛出异常时,一定要对抛出的异常进行捕获。
语法格式:
throw new 异常类类型([信息])
其中异常类类型为系统异常类名或用户自定
其语法格式:
try{ //程序代码(可能导致异常的代码 )
} catch(异常类类型1 对象名1){ //程序代码
} catch(异常类类型2 对象名2){ //程序代码
}

finally{ //程序代码
} 说明请见教材p133
例:利用try…catch…finally结构捕获ExceptionExample 类中所有的异常
allname=myfile1.list(); if(allname.length==0) {
System.out.println(“该目录下没有任何内容!"); } else {
System.out.println(“该目录下的内容有:"); for (int i=0;i<allname.length;i++)
异常处理 输入输出
一、异常
异常指的是程序运行过程中出现的非正常 事件。其中非正常事件指的是被0除、用户 输入出错、找不到文件等
异常指的是运行错误,编译错误不是异常
Hale Waihona Puke Baidu
Java对异常的处理 1.提供大量的异常类 (1) Java预定义了很多Exception类和Error类及其
大量的子类来描述异常。这些类都是Throwable 类的子类 。
public class ExceptionExample
{
static int num;
public static void main(String args[])
{
num=Integer.parseInt(args[0]); System.out.println("100整除"+num+"="+100/num);
创建的对象myfile表示c:\jdk\myjava目录中的文 件MyJava.class。
(2) File(File parent, String child);
该构造方法用一个已经创建的对应于某个目录的 File类对象,作为路径参数来创建File类对象, 如:
File MyFile=new File("c:\\jdk\\myjava"); File MyFile1=new File(MyFile,"MyJava.java");
class ExceptionDemo
{
public static void DivMethod(int num) throws NumberFormatException, ArithmeticException,
ArrayIndexOutOfBoundsException
{ System.out.println("100整除"+num+"="+100/num);
Java中的File类是不能读写文件的。
File类的构造方法
⑴File(String pathname) 该构造方法中的参数pathname,指定所创建的
File类对象对应的目录或文件 File myfile=new File("c:\\jdk\\myjava");
File myfile=new File(“c:\\jdk\\myjava\\MyJava.class");
File类的成员方法 (p142表5-2)
public String getName()返回目录或文件名 public String getPath()返回目录或文件所在
路径
public String getAbsolutePath()以字符串形 式返回目录或文件的绝对路径
public String getParent()以字符串形式返回 目录或文件的父目录
}
catch(ArrayIndexOutOfBoundsException e) { System.out.println("你还没有输入呢,请输入
整数值!"); } catch(NumberFormatException e) { System.out.println("你输入的是小数或字符,
请输入整数值!"); } catch(ArithmeticException e){ System.out.println("错误类型:"+e.toString()); } }
相关文档
最新文档