java之异常(基本概念)

什么是异常

异常是指程序可以编译,由于程序内部或外部的原因造成的问题。并不等同于错误。错误是指语法上的错误等导致代码不能编译。

java中所有的异常类都是从Throwable继承来的。Error类是jvm内部出现资源耗尽等问题时报的异常,这类异常往往无法解决。我们这里所讲述的异常都是Exception类中的。
异常可以分为运行时异常(RuntimeException)和已检查异常(IOException等)。

运行时异常往往编译没有问题,在运行时出现错误的异常。例如:数组越界等问题。
非检查时异常
运行结果为:

已检查异常是代码本身没有问题,但有可能会出现一些问题,在编写代码时需要主动抛出异常或对异常进行捕获。例如:文件找不到异常。
类型异常详细分类参照:菜鸟教程之异常处理

怎么处理异常

一般对异常进行简单的处理,有两种处理方式,捕获和抛出。
1. 捕获异常:使得异常不被抛到方法之外,也不需要throws规范

try{
//可能发生异常的代码
}
catch(异常的类型声明){
//发生异常时执行的代码
}
finally{
//无论是否发生异常都会执行的代码
}

package com.ar.dgh.tese4;
import java.io.UnsupportedEncodingException;

public class Test{

    public static void example()
    {
        String str = null;
        byte[] bytes={122,121,120};

        try {
            str = new String(bytes,"utf-8");
        } catch(UnsupportedEncodingException uee) {

        }

        System.out.println(str);

    }

    public static void main(String[] args){
        example();
    }
}

运行结果为:

zyx

finally可以省略,catch可以有多个,捕获多个不同的异常。也可以只有try代码块。
2. 抛出

  • throw
    抛出的是异常的对象,存在在方法体内,执行一定会抛出异常。

  • throws
    抛出的是异常的类型,声明在方法体外,可能会发生异常。

import java.io.UnsupportedEncodingException;

public class Test{

    public static void example() throws UnsupportedEncodingException
    {
        String str = null;
        byte[] bytes={122,121,120};
            str = new String(bytes,"utf-8");
        System.out.println(str);
    }
    public static void main(String[] args){
        example();//此时的方法是不能够被调用的,显示异常

    }

无论是抛出异常还是捕获异常都是消极的处理方式,而要解决异常还需要程序员来解决。

自定义异常

在遇到无法用异常类描述的错误时,可以自己定义异常。
定义一个派生于Exception的类,或者其子类的类
定义的类包含两个构造器:默认的构造器,带有详细描述信息的构造器

猜你喜欢

转载自blog.csdn.net/weixin_37044203/article/details/81430089