异常分类

1、类java.lang.Throwable作为所有异常的超类;

其下分为Error和Exception,Error为程序本身无法处理的错误,而Exception则是程序本身可以捕获并可处理的异常;

2、Exception下面有很多异常类

 

这些异常类被分为两种,一种是运行时异常(又称非检查异常),另一种则是编译异常(即检查异常)。

 

常见异常介绍

运行时异常:

  1. ArrayIndexOutOfIndex:数组越界异常
  2. NullPointerException:空指针异常
  3. ClassCastException:类型转换异常
  4. ClassNotFoundException:无法找到指定类异常
  5. ArithmeticException:算术异常
  6. IllegalArgumentException:非法参数异常
  7. MissingResourceException:资源缺失异常

1.ArrayIndexOutOfIndex:数组越界异常

List list = new ArrayList();
list.get(0);
//打印结果:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

2.NullPointerException:空指针异常

比如说你创建一个对象Student s=null;,然后你还用s来调用它的方法,那么就会空指针异常,因为你指向的对象已经不存在了。

实际上就是变量里没有地址值,却要强行用这个变量指向一个对象,没有地址当然找不到对应的东西,然后就报错了。

@Data
class People{
    private String name;
    private Integer age;
}
People people = new People();
String name = people.getName();
System.out.println("String"+":"+name);
Integer age = people.getAge();
System.out.println("ageInteger" +":"+age);
int ageInt = people.getAge();
System.out.println("ageInt" +":"+ageInt);
//打印结果:
String:null
ageInteger:null
java.lang.NullPointerException

People people2 = null;
people2.getAge(); //指向的对象已经不存在,还调用它的方法
//打印结果:
java.lang.NullPointerException

 此处例子是null赋值给int类型变量,所以报错

 

3.ClassCastException:类型转换异常

大部分原因是因为强制转换或者是SQL映射时发生了这个异常

<delete id="deleteByRoadName">
    DELETE FROM transport_record_today
    <where>
        1=1
        and road_desc  != #{describe,jdbcType=VARCHAR}
        <if test="describe!= -1 ">or road_desc IS NULL </if>
    </where>
</delete>

以上describe为varchar与-1比较就会抛出该异常;

4.ClassNotFoundException:无法找到指定类异常

ERROR [main] com.demo.vite.task.QuartzManager [QuartzManager.java:43] jobjob1 添加失败,java.lang.ClassNotFoundException: com.demo.vite.task.PostTask1

5.ArithmeticException:算术异常除数为0

java.lang.ArithmeticException: / by zero

 

6.IllegalArgumentException:非法参数异常

抛出的异常表明向方法传递了一个不合法或不正确的参数。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-rr-dd"); System.out.println(sdf.format(new Date())); //打印结果: java.lang.IllegalArgumentException: Illegal pattern character 'r'

 

7.MissingResourceException:资源缺失异常

资源丢失,要不你指定的路径错误就是把资源删掉了。

 

检查异常:

FileNotFoundException:找不到文件异常

Logging system failed to initialize using configuration from 'classpath:logback.xml' java.io.FileNotFoundException: class path resource [logback.xml] cannot be resolved to URL because it does not exist

异常

一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。

例如,下面的方法声明抛出 RemoteException 和 InsufficientFundsException:

public void withdraw(double amount) throws RemoteException, 
                        InsufficientFundsException { 
    // Method implementation 
}

抛出异常的两种方式

  1. 显式抛出异常,在程序同使用throw关键字,手动将异常实例抛出。
  2. 隐式抛出异常,抛出的主体是JVM,在运行时遇到无法处理的异常情况。
  • 程序级异常:由程序或者API程序抛出的异常。例如 IllegalArgumentException 类,IllegalStateException 类。
  • JVM(Java虚拟机) 异常:由 JVM 抛出的异常或错误。例如:NullPointerException 类,ArrayIndexOutOfBoundsException 类,ClassCastException 类。

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值