java学习之异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习之异常相关的知识,希望对你有一定的参考价值。
异常
什么类型的错误可以导致异常呢?
严重的硬件错误,如内存中某些芯片故障或者硬盘崩溃。
程序需要使用系统中当前不可用的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
按字节来拷贝一个文件
以上是关于java学习之异常的主要内容,如果未能解决你的问题,请参考以下文章
Java学习之NoClassDefFoundErrorClassNotFoundExceptionNoSuchMethodError