如何处理异常
---- try-catch-finally
---- throw
---- throws
---- 自定义异常
---- 异常链
什么是异常
异常本质上是程序上的错误。
错误在我们编写程序的过程中会经常发生,包括编译期间的运行期间的错误。
throwable
-Error
-虚拟机VirtualMachineError
-内存溢出OutOfMemoryError
-线程死锁ThreadDeath
-Exception
-非检查异常Unchecked Exception(空指针异常NullPointerException,数组下标越界异常ArrayIndexOutOfBoundsException,算数异常ArithmeticException,类型转换异常ClassCastException)
-检查异常Checked Exception
异常处理
在Java应用程序中,异常处理机制为:
抛出异常:异常对象(异常类型,异常出现时的程序状态 )
捕捉异常:对于运行时异常,错误或可查异常,Java技术所要求的异常处理方式有所不同。
Java规定:对于可查异常必须捕捉,或者声明抛出。允许忽略不可查的RuntimeException(含子类)和Error(含子类)。
通过5个关键字来实现:try,catch,finally.throw,throws
try-catch-finally
try块后可接零个或多个Catch块,如果没有catch块,则必须跟一个finally块。
package com.imooc.test;
import java.util.InputMismatchException;
import java.util.Scanner;
public class TryDemoOne {
public static void main(String[] args) {
/* //要求:定义两个整数,输出两数之商
int one = 12;
int two = 2;
System.out.println("one和two的商是:"+(one/two));
*/
//要求:定义两个整数,接受用户的键盘输入,输出两数之商
Scanner input = new Scanner(System.in);
System.out.println("======运算开始======");
try{
System.out.println("请输入第一个整数:");
int one = input.nextInt();
System.out.println("请输入第二个整数:");
int two = input.nextInt();
System.out.println("one和two的商是:"+(one/two));
}catch(ArithmeticException e) {
System.exit(1);//终止程序允许,可以写非0的任意值,可以终止任意程序
System.out.println("除数不允许为零");
e.printStackTrace();
}catch(InputMismatchException e) {
System.out.println("请输入整数");
e.printStackTrace();
}catch(Exception e) {
System.out.println("出错啦~~~");
e.printStackTrace();
}finally {
System.out.println("=====运算结束=====");
}
}
}
throw&throws
可以通过throws声明将要抛出何种类型的异常,通过throw将产生的异常抛出
throws语句用在方法定义时声明该方法要抛出的异常类型
当方法抛出异常列表中的异常时,方法将不对这些类型及其子类类型的异常作处理,而抛向调用该方法的方法