欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java学习笔记6(异常)

程序员文章站 2022-05-03 20:58:02
...

目录

1.简述Java Error类与Exception类的区别
2.简述异常处理的两种方式


1.简述Java Error类与Exception类的区别

  • Exception 是所有异常类的祖先类,而Error 类是所有错误类的祖先。
  • 异常是正常情况以外的事件,具有不确定性。例如:用户输入错误,除数为0,需要的文件不存在或打不开,数组下标越界,传入参数为空或不符合指定范围等。下例将产生一个除数为0的异常。遇到异常后,程序不再继续执行,而是直接交给系统(Java 虚拟机)处理,给出异常提示后退出程序。
public class ExampleException
{
    public static void main(String[] args)
    {
        int a,b,c;
        a = 67; b = 0;
        c = a/b; //除数为0
        System.out.println(a + "/" + b + "=" + c);
    }
}
运行结果:
Exception in thread "main" java.lang.ArithmeticException:
/by zero
  • Error 不是程序需要捕获和进行处理的,当Error发生时,程序将会停止。

2.简述异常处理的两种方式

  1. 声明抛出处理
  • 隐式声明抛出:异常类型是RuntimeException或是其子类,程序方法可以对异常不作任何声明抛出或处理,直接交给调用该方法的地方处理,程序能编译通过,不会对可能产生异常的代码行给出提示。
public class HelloWorldApplication {
    public static void main(String a[]) {
        Stack st = new Stack();
        Object ob = st.pop();
    }
}

运行结果:
Exception in thread "main" java.util.EmptyStackException
	at java.util.Stack.peek(Stack.java:102)
	at java.util.Stack.pop(Stack.java:84)
	at HelloWorldApplication.main(HelloWorldApplication.java:6)

当除数为0发生异常时,main()方法没有进行任何声明与处理
而直接用main()方法的Java虚拟机去处理。
  • 显式声明抛出:只需将方法进行如下改动就实现了显式声明抛出,其含义是:如果main 中readline()方法处发生异常,main不负责处理异常,由调用main方法的地方去处理异常,而调用main方法的是Java虚拟机,因此由Java虚拟机进行默认处理。
public static void main(String args[])修改为
public static void main(String args[]) throws IOException
  1. 捕获处理
  • 由 try-catch-finally 组成的异常处理块构成,其格式如下
try{
  statements
}
catch (ExceptionType1 ExceptionObject){
  Exception Handling
}
catch(ExceptionType2 ExceptionObject) {
  Exception Handling
}……
finally{
  Finally  Handling
}
  • 它的执行逻辑过程如图Java学习笔记6(异常)
  • try语句块含有可能抛出的一个或多个异常,因此,try后可跟多个catch。当太容易语句块没有异常发生时,catch不被执行
  • catch用来捕获异常,参数ExceptionObject 是 ExceptionType 类的对象,ExceptionType 是 Exception 类或其子类,指出catch需要处理的异常
  • Finally是这个语句块的统一出口,一般用来进行一些善后操作,可以不写,但是写了一定会被执行
相关标签: java