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.简述异常处理的两种方式
- 声明抛出处理
- 隐式声明抛出:异常类型是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
- 捕获处理
- 由 try-catch-finally 组成的异常处理块构成,其格式如下
try{
statements
}
catch (ExceptionType1 ExceptionObject){
Exception Handling
}
catch(ExceptionType2 ExceptionObject) {
Exception Handling
}……
finally{
Finally Handling
}
- 它的执行逻辑过程如图
- try语句块含有可能抛出的一个或多个异常,因此,try后可跟多个catch。当太容易语句块没有异常发生时,catch不被执行
- catch用来捕获异常,参数ExceptionObject 是 ExceptionType 类的对象,ExceptionType 是 Exception 类或其子类,指出catch需要处理的异常
- Finally是这个语句块的统一出口,一般用来进行一些善后操作,可以不写,但是写了一定会被执行
上一篇: Java并发——ThreadPoolExecutor详解(二)
下一篇: Java字节码增强