**
异常
**
异常是程序运行过程中出现的一种错误,有些同学还搞不懂编译时错误和运行时错误,下面给大家做一个简单的阐述:
编译时错误:代码示例
public class LianXi{
public static void main(String[] args) {
int a = 10;
int b ;
System.out.println(a / b);
}
}
运行结果
此处b没有初始化,不能通过编译。
注:在编译过程中,如果编译通过,一定不存在编译错误。
运行时错误代码示例:
public class LianXi{
public static void main(String[] args) {
int a = 10;
int b = 0;
System.out.println(a / b);
}
}
运行结果:
我们都知道,0不可被当做除数,所以此处虽然编译通过但是运行错误。
注:在运行过程中,如果当时没有出现错误,不代表后面就没有错误,自己的机器上没有出现错误,不代表别人的机器上没错误。
下面我们进入正题,首先我们一起看几个常见的异常
1,算数异常
public class TestException{
public static void main(String[] args) {
int a = 10;
int b = 0;
System.out.println(a / b);
}
}
运行结果如下
2,数组下标越界异常
public class TestException{
public static void main(String[] args) {
int[] a = {1,2,3};
System.out.println(a[100]);
}
}
运行结果如下:
3,空指针异常
public class TestException{
public static void main(String[] args) {
int[] a = null;
System.out.println(a[0]);
}
}
运行结果如下:
异常的具体语法
主要涉及的几个关键字
- try:try语句块中放置可能会抛出异常的代码
- catch:catch语句块中用来处理异常的代码,try和catch往往要搭配使用,当try中出现异常的时候就会进入catch中执行。
- throw:主动抛出一个异常对象(java的异常本质上就是一个一个的对象)。
- throws:某个方法可能会抛出某些异常。
- finally:一般用于异常处理完毕后的收尾工作。
下面一起来看几个实例:
实例一:如果代码中出现了异常,并且没有使用try catch,异常就会由JVM自己来处理,程序就会被终止,不会继续往下走
public class TestException{
public static void main(String[] args) {
int[] a = null;
System.out.println(a[0]);
System.out.println("异常之后的代码");
}
}
运行结果如下:
我们从运行结果可以看出,当抛出异常之后,程序直接被终止并没有打印出下面的“异常后的代码”
实例二:代码中可以使用try把可能抛出异常的代码包裹起来,使用catch来处理这样的异常
public class TestException{
public static void main(String[] args) {
try {
System.out.println("try中异常之前的代码");
int[] a = null;
System.out.println(a[0]);
System.out.println("try中异常之后的代码");
}catch (NullPointerException e){
System.out.println("catch中的代码");
}
System.out.println("Hello");
}
}
运行结果如下:
我们可以了解到try catch的执行顺序
1.先执行try中的代码(按顺序执行)。
2.执行try代码的过程中,如果出现异常就会进入到catch执行,try中剩下的代码就不再执行了。
3.当catch也执行完毕后,就会继续执行后续的代码,程序异常没有终止。
实例三:catch中异常的类型需要和抛出的异常类型匹配才能正确处理,否则执行不到catch中的逻辑
public class TestException{
public static void main(String[] args) {
try {
System.out.println("try中异常之前的代码");
int[] a = {1,2,3};
System.out.println(a[100]);
System.out.println("try中异常之后的代码");
}catch (NullPointerException e){
System.out.println("catch中的代码");
}
System.out.println("Hello");
}
}
运行结果如下:
作者能力有限,本次先分享到这里,如有错误或补充请在评论区留言,不胜感激,编程不易,我们一起努力!!!