0
点赞
收藏
分享

微信扫一扫

Java中的异常类总结


目录

​​一 异常概述​​

​​二 异常分类​​

​​1、运行时异常​​

​​2、编译时异常​​

​​三 异常过程分析​​

​​四 异常处理​​

​​1、为什么要进行异常处理?​​

​​2、处理异常的方式?​​

​​方法一try-catch-finally捕获异常​​

​​方法二使用throw在代码块中抛出异常​​

​​方法三使用throws在方法上往上级抛出​​

​​五 自定义异常​​

​​如何定义​​

一 异常概述

异常是指程序在执行过程中出现非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误。如果语法错了,则编译不通过,也不会产生字节码文件,根本不能运行。

在 Java 中,所有的异常都有一个共同的祖先java.lang包中的 Throwable 类。Throwable: 有两个重要的子类:Exception(异常) 和 Error(错 误) ,二者都是 Java 异常处理的重要子类,各自都包含大量子类。异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。

Java中的异常类总结_java

Throwable类常用方法

 public string getMessage():返回异常发生时的详细信息

public string toString():返回异常发生时的简要描述

public string getLocalizedMessage():返回异常对象的本地化信息。使 用Throwable的子类覆盖这个方法,可以声称本地化信息。如果子类没 有覆盖该方法,则该方法返回的信息与getMessage()返回的结果相同

public void printStackTrace():在控制台上打印Throwable对象封装的 异常信息

二 异常分类

根据编译时出现的异常还是运行时出现的异常

1、运行时异常

指所有的RuntimeException类以及子类(编译时不报错运行时候就会出现错误)

Java中的异常类总结_异常处理_02

  • RuntimeException类常见的异常子类有:
  • ArithmeticException(试图除数为0时)
  • NullPointerException(当程序访问一个空对象的成员变量或方法,访问一个空数组的成员时发生。)
  • ClassCastException
  • ArrayIndexOutOfBoundsException访问的元素下表超过数组长度 分析jvm是如何处理异常的过程
  • NumberFormatException数字格式异常!

2、编译时异常

编译异常指的是那些必须处理的异常(运行之前程序就报错)

Java中的异常类总结_java_03

三 异常过程分析

Java中的异常类总结_异常处理_04

四 异常处理

1、为什么要进行异常处理?

观察下面代码

public class Demo {
public static void main(String[] args) {
System.out.println("程序开始执行");
System.out.println("打印结果:"+10/0);
System.out.println("程序终止执行");
}
}

运行结果

程序开始执行
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ExceptionDemo.Demo.main(Demo.java:6)

可以发现如果程序没有正确的处理存在异常,当程序运行发生异常时程序会终止运行,为了让程序发生异常时候也能正常运行,必须引入异常处理语句来完善代码编写。

2、处理异常的方式?

方法一try-catch-finally捕获异常

try 块:用于捕获异常。其后可接零个或多个catch块,如果没有catch 块,则必须跟一个finally块。

catch 块:用于处理try捕获到的异常。同时使用多个catch块处理多个异常,并且捕获多个异常时范围小的要放在范围大的异常之前处理

finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。 当在try块或catch块中遇到return语句时,finally语句块将在方法返回 之前被执行。

在以下4种特殊情况下,finally块不会被执行:

1. 在finally语句块中发生了异常。

2. 在前面的代码中用了System.exit()退出程序。 3. 程序所在的线程死亡。 4. 关闭CPU。

方法二使用throw在代码块中抛出异常

Java中的异常类总结_子类_05

方法三使用throws在方法上往上级抛出

public class Demo {
public static void main(String[] args) {
try {
getSum(1, 2, 0);//调用者需要处理抛出的异常
} catch (Exception e) {
e.printStackTrace();
}
}
public static int getSum(int a,int b,int c)throws Exception {
return (a+b)/c;
}
}

五 自定义异常

实际开发中,jdk为我们提供的异常类不能满足我们需求,比如我们需要一个登陆异常类,就得我们自定义登陆异常类

如何定义

1.自定义一个编译时异常:

自定义类 并继承于 java.lang.Exception 。

2.自定义一个运行时异常

自定义类 并继承于 java.lang.RuntimeException

举报

相关推荐

0 条评论