JAVA异常处理

java错误分为两大类异常

1.检查性时异常

用户错误或者问题引起来的异常,这是程序员无法预见的,例如要打开一个不存在的文件时,一个异常就发生了,这些问题在编译时

不能被简单的忽略。

2.运行时异常

运行时异常是可能被程序员避免的异常,与检查时异常相反,运行时异常可以在编译时被忽略。

3:错误

错误不是异常,而是脱离程序员的控制,错误在代码中通常是被忽略,

———————————————————————————————————————————————————————————

Exception类的层次

所有的异常类都是从java.lang.Exception类继承的子类.

Exception类是Throwable类的子类,除了Exception类外,Throwable还有一个子类Error。

异常类主要有两个主要的子类,IOException和RuntimeException类


image

—————————————————————————————————————————————————————————————

JAVA内置类异常

java语言定义了一些异常类在java.lang包中,由于java.lang包是默认加载到,所有的java程序的,所以大部分从运行时异常类继承而来的异常都可以直接使用。

java根据各个类库也定义一些其他的异常,下列出几个java的编译时常见异常。

异常

描述

ArithmeticExcetion当初出现异常运算时,抛出异常,例如,一个数除以零,便会抛出此类异常
ArraryIndexOutofBoundsException当非法索引访问数组时抛出的异常,如果索引为负或者大于等于数组大小,则该索引为非法索引
ClassCastException当试图将对象强转为不是实例的子类时,抛出此异常
NumberFomartException当试图将字符串转换成一中数值类型,不能转换时,抛出此异常。
NullPointerException当对象试图在需要对象的时候使用NULL,抛出该异常。

————————————————————————————————————————————————————————————————————————————

异常方法

下面列表是Throwable类的主要方法

        方法及其说明:

1:public String getMassage()

      返回关于发生异常的详细信息,

2:public Throwable getCause()

     返回Throwable对象代表的异常原因

3:public void printStackTrace()

     打印toString()结果和栈层次到System.err,输出流错误。

————————————————————————————————————————————————————————————————————————————

捕获异常

使用try和catch关键字可以捕获异常,这个代码块要放在异常可能发生的地方。

try/catch代码块的代码称为保护代码,语法如下:

try

  {

//程序代码

}catch(Exceptionname  e)

{

      //catch 块,捕获的异常类型,包含要捕获异常类型的声明

}

异常代码

public static void main(String[] args) {
System.out.println("main begin");
try {
int n1 = Integer.parseInt(args[0]);
int n2 = Integer.parseInt(args[1]);
int a=n1/n2;
System.out.println(a);
return;
}catch (ArrayIndexOutOfBoundsException e){
e.printStackTrace();
}catch (NumberFormatException e){
System.out.println(e.getMessage());
}catch (ArithmeticException e){
System.out.println(e.getMessage());
}
catch (Exception e){
System.out.println("其他异常"+e.getMessage());
}finally {
System.out.println("释放资源");
}

System.out.println("核心代码");
image
当只输入一个整数时出现如下代码:
image
直接跳过,异常代码,输出下面的代码。牺牲一些代码。保护核心代码。
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————

final关键字

主要创建在try代码后面执行的代码块,无论什么情况,finally代码块中的代码总会执行,作用是可以用来释放资源。

注意下面事项:

catch不能独立try存在。

在try/catch的finally并非必须添加的。

try后面不能既没有catch也没finally。

try,catch,finally块之间不能添加任何代码。

—————————————————————————————————————————————————————————————————

声明自定义异常

在java中可以自定义异常,但必须满足

所有的异常都必须是Throwable的子类。

所以当写一个检查性的异常类,则需要继承Exception.(编译时异常类)

写运行时异常类继承RunTimeException类

实例代码为:

image

image






posted @ 2020-11-12 15:07  叮叮不当!  阅读(187)  评论(0)    收藏  举报