什么是异常
异常:是在程序中导致程序中断运行的一种指令流。
在idea中出现蓝色的第一个位置就是异常发生的位置
例如
public class ExceptionDemo01{
public static void main(String argsp[]){
int i = 10 ;
int j = 0 ;
System.out.println("============= 计算开始 =============") ;
int temp = i / j ; // 进行除法运算
System.out.println("temp = " + temp) ;
System.out.println("============= 计算结束 =============") ;
}
};
============= 计算开始 =============
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ExceptionDemo01.main(ExceptionDemo01.java:6)
异常体系结构
异常指的是Exception
Exception类, 在Java中存在一个父类Throwable(可能的抛出)
Throwable存在两个子类:
1.Error:表示的是错误,是JVM发出的错误操作,只能尽量避免,无法用代码处理。
2.Exception:一般表示所有程序中的错误,所以一般在程序中将进行try…catch的处理。
RuntimesExcpetion-运行时异常,非受检异常
JVM不会抛出的异常
处理异常
//如果要想对异常进行处理,则必须采用标准的处理格式,处理格式语法如下:
try{
// 有可能发生异常的代码段
}catch(异常类型1 对象名1){
// 异常的处理操作
}catch(异常类型2 对象名2){
//异常的处理操作
}
finally{
//异常的统一出口
}
多异常捕获的注意点:
1、 捕获更粗的异常不能放在捕获更细的异常之前。
2、 如果为了方便,则可以将所有的异常都使用Exception进行捕获。
try-catch的异常处理流程
1、 一旦产生异常,则系统会自动产生一个异常类的实例化对象。
2、 那么,此时如果异常发生在try语句,则会自动找到匹配的catch语句执行,如果没有在try语句中,则会将异常抛出.
3、 所有的catch根据方法的参数匹配异常类的实例化对象,如果匹配成功,则表示由此catch进行处理
4、 发生错误try会直接去匹配catch块,不会接着执行try语句块的内容
throw和throws
throw异常抛出自己处理,throws异常抛出用户处理
throw
public int calc(int a,int b) {
try{
int c=0;
if(b!=0) c=a/b;
else throw new ArithmeticException("0 is Divisor");
}catch(ArithmeticException ex){
System.out.pritln(ex.getMessage());
return c;
}
throws
public int calc(int a,int b) throws ArithmeticException{
try{
int c=0;
if(b!=0) c=a/b;
else throw new ArithmeticException("0 is Divisor");
return c;
}
Q:
什么情况异常抛给用户,什么情况我们自己处理?
抛给用户:传参的错误