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

java学习之借书系统

java学习之url

Java学习之链表

Java学习之IO二

java学习之JDBC