Java异常处理

最近在学Java异常处理,码一下备忘。

异常和错误的区别和处理方式

首先,错误和异常都是程序运行中出现了问题,错误一般是重大问题,一般与代码无关,最好的处理方式是交给JVM去处理。异常一般是中度或轻度问题,一般跟代码有关。

异常处理方法有两种:
  • 处理异常:使用try...catch...代码块来处理,把可能导致异常的代码放入try代码块中,把处理方法放入catch代码块中。
  • 声明异常:用throw抛出异常,让改代码的调用者来处理异常,可以在方法名后用throws关键字声明异常类型或者在catch代码块中用throw关键字抛出异常。

几种常见异常

算术异常类:ArithmeticExecption
当除数为0时会出现该异常,用catch代码块处理异常后,程序可以编译通过。

public static void div(int a, int b) {
        int x = 0;
        try {
            x = a / b;
        }
        catch(java.lang.ArithmeticException e) {
            x = 0;
        }
        finally {
            System.out.println(x);
        }
    }

    public static void main(String[] args) {
        div(3, 0);
    }

空指针异常类:NullPointerException
对空内容进行指针操作会出现该异常

public static void main(String[] args) {
        String a = null;
        try {
            int i = a.indexOf('h');
        }
        catch (java.lang.NullPointerException e) {
            System.out.println(e.fillInStackTrace());
        }
    }

数组负下标异常:NegativeArrayException

int[] arr = new int[3];
        try {
           arr[-8] = 0;
        }
        catch(java.lang.NegativeArraySizeException e){
            e.printStackTrace();
        }

数组下标越界异常:ArrayIndexOutOfBoundsException
当数组下标超过数组长度会引起该异常

int[] arr = new int[3];
        try {
           arr[3] = 0;
        }
        catch(java.lang.ArrayIndexOutOfBoundsException e){
            e.printStackTrace();
        }

字符串转换为数字异常:NumberFormatException
字符串中带有空格,转换成int类型出现该异常

String num = "123 ";
       try {
           Integer.parseInt(num);
       }
       catch (NumberFormatException e) {
           e.printStackTrace();
       }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2.JAVA异常 异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程...
    青城楼主阅读 568评论 0 0
  • 六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代...
    Executing阅读 1,357评论 0 6
  • 概念介绍 异常是发生在程序执行过程中阻碍程序正常执行的错误事件,当一个程序出现错误时,可能的情况有如下3种: 语法...
    niaoge2016阅读 5,215评论 2 20
  • 初识异常(Exception) 比如我们在取数组里面的某个值得时候,经常会出现定义的取值范围超过了数组的大小,那么...
    iDaniel阅读 1,882评论 1 2
  • Java异常类型 所有异常类型都是Throwable的子类,Throwable把异常分成两个不同分支的子类Erro...
    予别她阅读 952评论 0 2