一.异常(Exception)机制
1.什么是异常,即在运行过程中可能遇到的一些意想不到的错误,导致的程序出错,例如:断网了,文件丢失了,非法输入等。叫做异常,Exception
2.什么是错误:错误不是异常,而是脱离了程序员控制,基本是虚拟机异常,JVM错误,和前端错误。Error
3.错误和异常的区别:Error类对象基本是JVM生成并抛出,大多数的错误与代码无关。
4.Exception包括了RuntimeException(运行时的异常)和IOException(输入输出流异常)两个分支
5.其中RuntimeException是尤为重要的子类,包括了{ArrayIndexOutOfBoundsException(数组下标异常),NullPointException(空指针异常),ArithmeticException(算术异常),MissResourceException(丢失资源),ClassNotFoundException(找不到类)}等异常,都是程序员自身造成。
二.异常处理机制
处理异常使用到的关键字:try , catch , finally , throw , throws(throw与throws不一样!)
具体使用方法如下
int a = 1;
int b = 0;
try {//try是对该代码块中的代码进行检查
System.out.println(a/b);
}catch (ArithmeticException E){//catch是用来捕获该代码块中的异常
//catch(输入要捕获的异常类型)
System.out.println("程序出错");//若捕获到异常则执行该代码,否则就跳过
}finally {
System.out.println("finally");//finally是最后一定会执行的,一般用来表示程序结束
}
/*
Exception in thread "main" java.lang.ArithmeticException: / by zero
此时,结果显示为算术异常,如何处理这个异常呢,我们就能使用到try catch 和finally
*/
try和catch一定是一起出现的,有try就一定有catch。
同时,一个try可以有多个catch
package Exception;
public class Test {
public static void main(String[] args) {
try {
new Test().a();
/*
此地用的是一个匿名类,即没有名字,直接new 类名().方法;可以直接调用该方法
此时执行的结果为Exception in thread "main" java.lang.StackOverflowError
可以看出,这里的结果是一个Error
多次使用catch时,要注意的是要从小到大使用,不可从大到小,不然后面的代码都是冗余代码
异常的大小排序为:Throwable包括了Exception和Error,所以Throwable是最大的
*/
}catch (ArithmeticException e){//从小开始
System.out.println("ArithmeticException");
}catch (Exception e){
System.out.println("Exception");
}catch (Throwable t){
System.out.println("Throwable");
}//此时结果为Throwable
}
public void a(){
b();
}
public void b(){
a();
}
}
try和catch这类方法可以使用快捷键调用
ctrl+alt+t
throw和throws是用来抛出异常的,不同的是,throw是在针对方法内的异常,而throws是针对方法的异常,当方法内的异常无法处理时,我们使用throws来迫使方法抛出这个异常
package Exception;
public class Test3 {
public static void main(String[] args) {
try {
new Test3().test(1,0);
} catch (ArithmeticException e) {
System.out.println("程序出错了");
}
}
public void test(int a , int b)throws ArithmeticException{
if (b==0){
throw new ArithmeticException();//throw是用来主动抛出异常的,即当条件成立,直接报ArithmethicException异常
}
}
}
try和catch的用处是:若程序中遇到异常,程序会直接停止,而使用try和catch,程序会继续运行下去