• 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

    按字节来拷贝一个文件

  • 相关阅读:
    【Spring学习笔记-MVC-6】SpringMVC 之@RequestBody 接收Json数组对象
    【Spring学习笔记-MVC-1.1--】@PathVariable与@RequestParam、@CookieValue等比较
    【Oracle学习笔记-1】Win7下安装Oracle 10g
    【Oracle学习笔记-3】关于Oracle 10g中各种服务解析
    【前端编程-学习-5】系统加载提示
    【EasyUI学习-3】Easyui tabs入门实践
    【EasyUI学习-2】Easyui Tree的异步加载
    【Hibernate学习笔记-6.1】无连接表的N-1关联(单向)
    ArcGIS 要素合并
    Nginx 链接
  • 原文地址:https://www.cnblogs.com/kelan/p/5284484.html
Copyright © 2020-2023  润新知