文章目录本文为学习中的一些总结性内容,并非权威内容,欢迎理性讨论。文章内容有部分引用,如侵犯了您的版权内容请联系我删除。
- 一、什么是异常
- 二、Throwable类
- 三、错误和异常
- 四、异常
- 1.异常的捕捉
- 2.异常的抛出
一、什么是异常
程序在自上而下执行的时候,发生了不可预期的事件,这个事件阻止程序的运行。这就是异常。
例如:数组下标越界,类转换异常等…
Java给咱们封装很多的异常类,并且提供很优秀的异常处理机制。
Java提供了一个类Throwable
二、Throwable类
使用 Throwable 类的构造方法 Throwable( ) ,可以构造出一个新的可抛出的 null 作为其详细信息。
而使用该类的 getMessage( ) 方法可以返回此 throwable 的详细消息字符。
public class Demo1 {
public static void main(String[] args) {
System.out.println("嘻嘻");
System.err.println("哈哈");
Throwable throwable = new Throwable();
System.out.println(throwable.getMessage());
Throwable throwable2 = new Throwable("哈哈,我傻逼了");
System.out.println(throwable2.getMessage());
throwable2.printStackTrace();
//java.lang.Throwable: 哈哈,我傻逼了
//告知了这个错误信息
System.out.println(throwable2.toString());
}
}
三、错误和异常
Throwable 下面有两个子类 一个叫Error 一个叫Exception
Error:是代表JVM本身的错误,咱们程序员是通过代码解决不了的。
Exception: 异常,代表程序在运行过程中,发生了不可预期的事件。可以使用Java来出来,让他继续执行下去。
异常分为两种:
编译时异常:
FileNotFoundException
SQLException
ClassNotFoundException
InterruptException
运行时异常:
数组下标越界 ArrayIndexOutOfBoundException
类转换异常 ClassCastException
空指针异常 NullPointerException
四、异常代码有可能会出现异常。Java给咱们提供了两种解决方案
1.异常的捕捉
2.异常的抛出
1.异常的捕捉在程序运行过程中,代码难免有可能会遇到异常。如果没有异常,代码正常执行。
如果有异常,就捕捉异常
语法格式:
try {
有可能出现异常的代码
} catch (异常对象) {
}
示例代码为
public class Demo5 {
public static void main(String[] args) {
int[] arr = new int[2];//数组的容量是2
test(1, 0, arr);
}
public static void test (int a, int b, int[] arr) {
int ret = 0;
try {
ret = a / b;//有可能出现的异常的代码
arr[2] = 89;//这个会有异常
//jvm造出来哪个异常对象,就去catch 到哪个异常然后去执行具体的catch
} catch (Exception e) {
System.out.println("123");
System.out.println(e.getMessage());
}
System.out.println(4 + 8);
}
}
2.异常的抛出
在代码出现异常的地方进行异常的抛出
如果异常的抛出的话,一旦发生异常,从出现异常的地方会终止代码
使用两个关键字:
throw: 在方法中抛出一个异常。自己造一个错
throws: 在方法的声明处书写,告知当前调用者,此处有异常。要小心
示例代码为
import java.io.FileNotFoundException;
public class Demo8 {
public static void main(String[] args) throws Exception{
test(0);
Thread.sleep(1000);
}
public static void test (int a) throws FileNotFoundException{
if (a == 0) {
//编译时异常
throw new FileNotFoundException();
}
System.out.println("jvm xixi");
}
}



