您的位置:首页 > 编程语言 > Java开发

java学习之异常

2016-03-17 12:57 239 查看
异常

什么类型的错误可以导致异常呢?

严重的硬件错误,如内存中某些芯片故障或者硬盘崩溃。

程序需要使用系统中当前不可用的I/O设备

试图用零去除

试图通过超过边界的下标访问数组的元素

整数溢出

浮点数溢出

试图打开不存在的文件以使用

试图打破安全性,比如试图修改只读文件

try {

// 接受监视的程序块,在此区域可能产生异常

//要测试的代码

} catch (SomeExceptionType e) {

// 对SomeException出现时的处理

} catch (错误类型Exception e) {

// 对Exception出现时的处理

}

try{}程序块中通常包含了java程序中的一段代码,这段代码在运行中可能会出现异常的事件。try意味着需要检测这段代码的执行。

catch程序块:

语法为:catch (ExceptionClass exceptionObj){}

catch程序块必须出现在try程序块之后。一个try程序块后可以跟一个或多个catch程序块。

当try程序块中没有出现异常时,catch程序块直接被跳过。

当try程序块中出现异常时,与当前异常匹配的catch程序块被执行。

public class ExceptionTest{

public static void main(String args[]){

int b=0; int a;

try { a=4/b;}

catch(ArithmeticException e){

System.out.println("divided by 0");}

}

}

抛出什么异常就要处理什么异常

Error和 RuntimeException不用扑获

只有IOException才需要扑

Error:描述了java运行时间系统内部的错误以及资源耗尽的情况。用户一般对这种错误是无能为力的。(例如虚拟机内部的错误、内存溢出、堆栈溢出的错误)

异常的分类:

Unchecked Exception是指Error类和RuntimeException类及其他们的子类。

RuntimeException及其子类表示的异常往往是由于程序编写的错误造成的。

例如数组越界错误,空指针错误等,这一类错误往往可以通过改写程序来避免。

在程序中可以不捕获Unchecked Exception。

Java程序中常用的异常类

RuntimeException:

错误的转型(cast):java.lang.ClassCastException

数组越界错误:java.lang.ArrayIndexOutOfBoundsException

空指针错误:java.lang.NullPointerException

数组元素类型错误:java.lang.ArrayStoreException

算术运算错误:java.lang.ArithmeticException

String转换成数字类型时的错误:java.lang.NumberFormatException

非RuntimeException:

文件读取越界:java.io.EOFException

文件没有找到:java.io.FileNotFoundException

URL链接错误:java.net.MalformedURLException

主机不可识别:java.net.UnknownHostException

throw

如果程序执行中遇到了throw语句则正常的流程中断,转入到catch程序块中处理异常。

throws往上抛,程序尽量往上抛。

finally—一定会执行的程序块(注意不是final)

异常有一个统一的出口--finally{}程序块

try {

//常规的代码;

}

catch(){

//处理异常

}

finally {

//无论发生什么异常(或者不发生任何异常),都要执行的部分;

}

Note:finally{}代码段在某些情况下是非常有用的,例如在异常发生之后我们还需要务必关闭数据库的连接,关闭文件,关闭已经打开的端口,关闭网络连接等。这些都是在一个完整、严密的程序中需要考虑的。

File file = new File("F:\\day07\\BAM_Teacher\\MyCode\\src\\org\\kelan\\day09\\text.txt");

注意在JAVA里面引用路径的方法,要用双“\\”分开,因为用单“\”可能就会和后面的比如\t是一个字符,双“\\”前一个“\”是转移字符,告诉后面后面的一个“\”是一个文件路径“\”。

File类和Stream类的区别:

File类主要用来描述系统中的文件在磁盘上的存储情况。

Steam类主要是对文件的内容进行操作,例如我们必须通过FileInputStream, FileOutputStream或者 RandomAccessFile流来存取文件。

字节流转化成字符流用InputStreamReader

按字节来拷贝一个文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: