zoukankan      html  css  js  c++  java
  • Java自学-异常处理 异常分类

    Java 中异常的分类

    异常分类: 可查异常,运行时异常和错误3种
    其中,运行时异常和错误又叫非可查异常

    步骤 1 : 可查异常

    可查异常: CheckedException
    可查异常即必须进行处理的异常,要么try catch住,要么往外抛,谁调用,谁处理,比如 FileNotFoundException
    如果不处理,编译器,就不让你通过

    package exception;
      
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
      
    public class TestException {
      
        public static void main(String[] args) {
              
            File f= new File("d:/LOL.exe");
              
            try{
                System.out.println("试图打开 d:/LOL.exe");
                new FileInputStream(f);
                System.out.println("成功打开");
            }
            catch(FileNotFoundException e){
                System.out.println("d:/LOL.exe不存在");
                e.printStackTrace();
            }
              
        }
    }
    

    步骤 2 : 运行时异常

    运行时异常RuntimeException指: 不是必须进行try catch的异常
    常见运行时异常:
    除数不能为0异常:ArithmeticException
    下标越界异常:ArrayIndexOutOfBoundsException
    空指针异常:NullPointerException

    在编写代码的时候,依然可以使用try catch throws进行处理,与可查异常不同之处在于,即便不进行try catch,也不会有编译错误
    Java之所以会设计运行时异常的原因之一,是因为下标越界,空指针这些运行时异常太过于普遍,如果都需要进行捕捉,代码的可读性就会变得很糟糕。

    package exception;
      
    public class TestException {
      
        public static void main(String[] args) {
             
            //任何除数不能为0:ArithmeticException
            int k = 5/0;
             
            //下标越界异常:ArrayIndexOutOfBoundsException
            int j[] = new int[5];
            j[10] = 10;
             
            //空指针异常:NullPointerException
            String str = null;
            str.length();
       }
    }
    

    步骤 3 : 错误

    错误Error,指的是系统级别的异常,通常是内存用光了
    默认设置下,一般java程序启动的时候,最大可以使用16m的内存
    如例不停的给StringBuffer追加字符,很快就把内存使用光了。抛出OutOfMemoryError
    与运行时异常一样,错误也是不要求强制捕捉的

    package exception;
      
    public class TestException {
      
        public static void main(String[] args) {
         
            StringBuffer sb =new StringBuffer();
             
            for (int i = 0; i < Integer.MAX_VALUE; i++) {
                sb.append('a');
            }
             
        }
     
    }
    

    步骤 4 : 三种分类

    总体上异常分三类:

    1. 错误
    2. 运行时异常
    3. 可查异常
      三种分类

    练习Java异常分类

    运行时异常 RuntimeException,能否被捕捉?

    错误Error,能否被捕捉?

    面试题常问题: 运行时异常与非运行时异常的区别

    答案

    都可以.

    package exception;
     
    public class TestException {
     
        public static void main(String[] args) {
     
            String str = null;
     
            try {
                str.toString();
            } catch (NullPointerException e) {
                System.out.println("捕捉到运行时异常: NullPointerException ");
            }
     
            StringBuffer sb = new StringBuffer("1234567890");
            try {
                for (int i = 0; i < 100; i++) {
                    sb.append(sb.toString());
                }
            } catch (OutOfMemoryError e) {
                System.out.println("捕捉到内存用光错误:  OutOfMemoryError");
            }
     
        }
    }
    

    运行时异常与非运行时异常的区别:
    运行时异常是不可查异常,不需要进行显式的捕捉
    非运行时异常是可查异常,必须进行显式的捕捉,或者抛出

  • 相关阅读:
    tnagios
    python-gearman使用
    yaml
    中国大陆互联网国际出口情况(2015年)
    vsftpd配置
    spoj-ASSIGN-bitDP
    spoj-ANARC05H -dp
    Light oj 1379 -- 最短路
    SPOJ-394-ACODE
    2018年东北农业大学春季校赛
  • 原文地址:https://www.cnblogs.com/jeddzd/p/11670673.html
Copyright © 2011-2022 走看看