1.异常分类

Throwable是Java中所有错误和异常的超类。它的下一级是Error和Exception

1.1 Error(错误)

Error是指程序运行时系统的内部错误和资源耗尽错误。程序不会抛出该类工具。若是泛起了Error,代表程序运行时JVM泛起了重大问题,好比常见的OutOfMemoryError(OOM),这时应当见告用户并只管让程序平安竣事。

1.2 Exception(异常)

Exception是指程序可以自身处置的异常。Exception又分为检查异常(CheckedException)和运行异常(RuntimeException):

  • CheckedException:检查异常一样平常是外部错误,都发送在编译阶段,是我们在编码时应当可以预计会发生的异常情况,编译器通常会提醒我们去捕捉这些异常并举行处置。我们可以通过try-catch来捕捉或者throws语句来抛出,否则编译器会提醒不通过。常见的有:FileNotFoundException,SQLException,ClassNotFoundException。
  • RuntimeException:运行异常一样平常是Java虚拟机正常运行时代抛出的异常的超类,程序中可以处置这些异常,也可以不处置这些异常,编译器并不会提醒我们来处置这些异常。然则这些异常通常都是编码泛起了错误导致的,我们应当只管制止泛起这些异常。常见的有:NullPointerException(空指针),IndexOutOfBoundsException(下标越界),ClassCastException(类型强制转换异常)。

2.异常处置方式

在Java中,异常处置机制主要是:抛出异常捕捉异常

2.1 抛出异常

遇到异常不举行详细的处置,而是通过throw、throws继续抛给调用者。这两者有一定的区别:

  • 位置区别:throw用在函数体内,后面跟详细的异常工具, throws用在函数方式上,后面跟一个或者多个异常类
  • 功效区别: throw示意一定抛出了某种特定异常工具,执行到throw后,会跳转会调用者,而且调用者会吸收到该异常,throws示意可能抛出异常,并不一定会发生这些异常,调用者只是知道该方式可能泛起的问题,可以预先给出处置方式

抛出异常后都是让调用者去吸收并举行相关处置

2.2 捕捉异常

通过try-catch语句在catch中捕捉相关异常,并举行处置。try来捕捉其中代码的异常,catch负责处置详细的异常。

 try {
          BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(new File("test.txt")));
      } catch (FileNotFoundException e) {
          System.out.println("FileNotFoundException文件未找到异常。");
      }

一旦try中捕捉的异常举行catch块中,程序将不再执行try后面的语句,同时也不会再进入其他catch块中,所以在多个catch块中应该将加倍底层的catch放在前面,当与finally同时使用时,catch块中执行竣事会进入finally中

public class ExceptionTest {
    public static void main(String[] args){
        try {
            System.out.println("try1");
            int i = 1/0;
            System.out.println("try2");
        }catch (ArithmeticException e){
            System.out.println("ArithmeticException");
        }catch (RuntimeException e){
            System.out.println("RuntimeException");
        }catch (Exception e){
            System.out.println("Exception");
        }finally {
            System.out.println("finally");
        }
    }
}

执行效果:

try1
ArithmeticException
finally

3.常见异常

3.1 RuntimeException
  • 1、ArrayIndexOutOfBoundsException:下标越界异常,常见于数组索引值大于即是数组大小时抛出。
  • 2、IllegalArgumentException:参数非法异常,当方式的参数类型不正确会泛起
  • 3、ArithmeticException:算术异常,好比除数为0的时刻
  • 4、NullPointerException:空指针异常,当使用的工具为null时会泛起,Java8中可以使用Optional来处置null
3.2 IOException
  • 1、IOException:操作输入输出流时泛起。
  • 2、FileNotFoundException:文件未找到时泛起
  • 3、EOFException:文件已竣事,主要用于数据输入流的信号竣事。

3.3 其它常见异常

  • 1、ClassNotFoundException:类找不到异常,在classPath中未能找到对于类时会泛起
  • 2、SQLException:操作数据库时异常
  • 3、TimeoutException:超时异常

4.自定义异常

在现实开发中,通常在项目中封装一个自定义异常类BaseException来继续RuntimeException,营业异常可以继续BaseException。

public class BaseException extends RuntimeException {
    public BaseException() {
        super();
    }

    public BaseException(String message, Throwable cause) {
        super(message, cause);
    }

    public BaseException(String message) {
        super(message);
    }

    public BaseException(Throwable cause) {
        super(cause);
    }
}
,

欧博网址开户

www.sweetyhk.com欢迎进入欧博网址(Allbet Gaming),欧博网址开放会员注册、代理开户、电脑客户端下载、苹果安卓下载等业务。

Allbet Gaming声明:该文看法仅代表作者自己,与阳光在线无关。转载请注明:欧博会员开户:Java中异常分类和Throw和Throws的区别
发布评论

分享到:

阳江拉手网:杨紫送了邓伦一个包,即使邓伦被人吐槽娘,他也要背!
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。