异常:程序出现了不正常的情况
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码;
}
执行流程:
程序从try里面的代码开始执行
出现异常,会自动生成一个异常类对象,该异常对象将被提交给JAVA运行时系统
当JAVA运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理
执行完毕之后,程序还可以继续往下执行
package Experience;
public class ExceptionDemo1 {
public static void main(String[] args){
System.out.println("开始");
method();
System.out.println("结束");
}
public static void method(){
try {
int arr[] = {1, 2, 3};
System.out.println(arr[3]);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("你访问的数组不存在");
}
}
}
Throwable成员方法
public String getMessage() 返回此throwable的详细消息字符串
public String toString() 返回此可抛出的间断描述
public void printStackTrace() 把异常的错误信息输出在控制台
package Experience;
public class ExceptionDemo1 {
public static void main(String[] args){
System.out.println("开始");
method();
System.out.println("结束");
}
public static void method(){
try {
int arr[] = {1, 2, 3};
System.out.println(arr[4]);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println(e.getMessage());
}
}
}
package Experience;
public class ExceptionDemo1 {
public static void main(String[] args){
System.out.println("开始");
method();
System.out.println("结束");
}
public static void method(){
try {
int arr[] = {1, 2, 3};
System.out.println(arr[4]);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println(e.toString());
e.printStackTrace();
}
}
}
finally:
表示无论出不出现异常,finally{}里的语句都会执行
package Experience;
public class ExceptionDemo1 {
public static void main(String[] args) {
System.out.println("开始");
method();
}
public static void method(){
try {
int a=10/0;
System.out.println(a);
}catch (Exception e){
System.out.println("异常为:"+e);
}finally {
int a=10;
System.out.println(a);
}
}
}
throw 和throws 可以查看这篇文章,讲的比较清楚
注意一点:throws的方式只是将异常抛给了方法的调用者,并没有真正处理掉,直到一层一层抛到main方法的时候,用try catch语句捕获和处理异常