java04四 、异常

1.异常

1.1.1 异常的体系结构

 

Throwable

Error

 

Exception

RuntimeException

RuntimeException

Error严重错误不需要处理

Exception称为异常类,表示程序本身可以处理的问题

RuntimeException:运行时异常

非RuntimeException:编译时异常。编译不通过,必须处理

1.1.2 常见的编译时异常

1.FileNotFoundException

2.ClassNotFoundException

3.SQLException

4.NoSuchFieldException

5.NoSuchMethodException

6.ParseException

1.1.3 常见的运行时异常

1.NullPointerException

2.ArithmeticException

3.ClassCastException

4.ArrayIndexOutOfBoundsException

5.StringIndexOutOfBoundsException

 

1.2 JVM默认处理异常的方式

如果程序出现了问题,我们没有做任何处理,最终JVM 会做默认的处理,处理方式有如下两个步骤:

(1)把异常的名称,错误原因及异常出现的位置等信息输出在了控制台。

(2)程序停止执行

1.3 异常的处理方案一:try catch

定义格式:

try { 可能出现异常的代码;}

 catch(异常类名 变量名) { 异常的处理代码;}

执行流程

程序从 try 里面的代码开始执行,出现异常,就会跳转到对应的 catch 里面去执行,执行完毕之后,主程序还可以继续往下执行

示例

public class ExceptionDemo01 {

   public static void main(String[] args){       

System.out.println("开始");       

method();       

//method方法出现异常,处理之后回到主程序继续执行

System.out.println("结束"); 

 }   

 public static void method() {       

try {          

 int[] arr = {1, 2, 3};          

 System.out.println(arr[3]);        

   System.out.println("这里能够访问到吗");      

} catch (ArrayIndexOutOfBoundsException e){       

System.out.println("数组索引不存在,请回去修改");            e.printStackTrace();      

}}

1.4 异常的处理方案二:Throws

(一)定义格式:

public void 方法() throws 异常类名 {    }

(二)注意事项:

(1)编译时异常必须要进行处理,两种处理方案:try...catch …或者 throws,如果采用 throws 这种方案,将来谁调用谁处理

(2)运行时异常可以不处理,出现问题后,需要我们回来修改代码

(三)示例代码

public class ExceptionDemo {  

  public static void main(String[] args) {        

System.out.println("开始");

//       method();      

 try {          

  method2();      

 }catch (ParseException e) {          

  e.printStackTrace();      

 }      

  System.out.println("结束");  

 }   

 //编译时异常  

 public static void method2() throws ParseException {      

 String s = "2048-08-09";      

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");      

  Date d = sdf.parse(s);      

  System.out.println(d);

  }     

//运行时异常    

public static void method() throws ArrayIndexOutOfBoundsException {  

     int[] arr = {1, 2, 3};      

 System.out.println(arr[3]);

}}

 

1.5 自定义异常

 

 格式:

public class 异常类名 extends Exception{}

 

1.6 throwsthrow的区别

throws

用在方法声明后,跟异常类名;

表示抛出异常,由方法的调用者处理;

不一定抛出异常。

throw:

用在方法体内;

表示抛出异常,由方法体内的语句处理;

一定抛出异常。

示例代码:

public class Teacher {    

public void checkScore(int score) throws ScoreException {      

 if(score<0 || score>100) {     

     throw new ScoreException("分数应在0-100之间");    

  }

 }}

 

posted @ 2021-12-16 09:28  烁妈妈  阅读(64)  评论(0)    收藏  举报