Java学习笔记(3)——有关异常

异常处理:

try {
            
        }catch(ExceptionType0 e) {
            
        }catch(ExceptionType1 e) {
            
        }.....finally {
            
        }

有四种情况不执行finally语句:

  • 在finally语句块中发生了异常
  • 在前面的代码中使用了System.exit()退出程序。
  • 程序所在的线程死亡
  • 关闭CPU。

Java中常见异常:

 

异常类 说明
ClassCastException 类型转换异常
ClassNotFoundException 未找到相对应的异常
ArithmeticException 算术异常
ArrayIndexOutOfBoundsException 数组下标越界异常
ArrayStoreException 数组中包含不兼容的值抛出异常
SQLException 操作数据库异常类
NullPointerException 空指针异常
NoSuchFieldException 字段未找到异常
NoSuchMethodException 方法未找到抛出的异常
NumberFormatException 字符串转换为数字抛出的异常
NegativeArraySizeException 数组元素个数为负数抛出的异常
StringIndexOutOfBoundsException 字符串索引超出范围抛出的异常
IOEException 输入输出异常
IllEgalAccessException 不允许访问某类异常
InstantiationException 当应用程序试图使用Class类中的newInstance()方法创建一个类的实例,而指定的类对象无法被实例化时,抛出的异常
EOFException 文件已结束异常
FileNotFoundException 文件未找到异常

 

 

自定义异常:

(1)创建自定义异常类

(2)在方法中通过throw关键字抛出异常对象

(3)如果在当前抛出异常的方法中处理异常,可以使用try-catch语句块捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续下一步操作。

(4)在出现异常方法的调用者中捕获并处理异常。

  

 1 public class Tran {
 2     
 3     int add(int x,int y) throws MyException {
 4         
 5         if(x+y>=500||x+y<=0) {
 6             throw new MyException("越界");
 7         }else if(x==y){
 8             throw new MyException("相等");
 9         }
10         return x+y;
11     }
12     
13     public static void main(String[] args) {
14         // TODO Auto-generated method stub
15         try {
16             Tran T = new Tran();
17             T.add(85, 46);
18             //如果没注释掉T.add(446, 467);则抛出越界的异常后,程序终止,不会判断是否相等。
19             T.add(446, 467);//将会抛出越界的异常
20             
21             T.add(46, 46);    //将会抛出相等的异常
22         }catch(MyException e) {
23             System.out.println(e);
24         }
25     }
26 
27 }
28 class MyException extends Exception{
29     public MyException(String information){
30         super(information);
31     }
32 }

 

 

 1 try {
 2             Tran T = new Tran();
 3             System.out.println(T.add(46, 0));
 4             
 5         }catch(MyException e) {
 6             System.out.println(e);
 7         }catch(ArithmeticException e ) {
 8             System.out.println("除数不能为0");
 9         }catch(Exception e) {
10             System.out.println("发生除上述两种情况外的异常");
11         }

 

当我们使用多个catch来捕获异常时,Exception必须放在最后!

因为Exception是所有异常的父类,如果将(Exception e)放在第一个,后面的代码块将不会得到执行。

所以catch语句的顺序很重要!

 

posted @ 2020-03-17 22:20  菠菜面筋  阅读(193)  评论(0编辑  收藏  举报