知识学习——Java异常处理

异常处理

这里写图片描述

异常分为两种

1、error—错误 : 是指程序无法处理的错误,表示应用程序运行时出现的重大错误。例如jvm运行时出现的OutOfMemoryError以及Socket编程时出现的端口占用等程序无法处理的错误。
2、Exception — 异常 :异常可分为运行时异常跟编译异常

1)运行时异常:即RuntimeException及其之类的异常。这类异常在代码编写的时候不会被编译器所检测出来,是可以不需要被捕获,但是程序员也可以根据需要进行捕获抛出。常见的RUNtimeException有:NullpointException(空指针异常),ClassCastException(类型转换异常),IndexOutOfBoundsException(数组越界异常)等。

2)编译异常:RuntimeException以外的异常。这类异常在编译时编译器会提示需要捕获,如果不进行捕获则编译错误。常见编译异常有:IOException(流传输异常),SQLException(数据库操作异常)等。

3、java处理异常的机制:抛出异常以及捕获异常 ,一个方法所能捕捉的异常,一定是Java代码在某处所抛出的异常。简单地说,异常总是先被抛出,后被捕捉的。

Java 内置异常类

非检查性异常:
这里写图片描述

检查性异常:
这里写图片描述

异常方法(Throwable 类的主要方法)
这里写图片描述

捕获异常

当前方法知道如何处理该异常时,使用 try 和 catch 关键字可以捕获异常,然后在对应的catch块中修复该异常。

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}

多重捕获

try{
   // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}

使用finally回收资源

finally 关键字用来创建在 try 代码块后面执行的代码块。无论是否发生异常,finally 代码块中的代码总会被执行。在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。例如数据库连接、网络连接和磁盘文件,这些资源必须显式回收。

try{
  // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}finally{
  // 程序代码
}

抛出异常

使用throws关键字

当前方法不知道如何处理某种异常,可以在定义该方法的时候声明抛出。

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

使用throw关键字

如果需要在程序中自行抛出异常,要使用throw语句,throw语句可单独使用,但抛出的不是异常类,而是一个异常实例

thorw ExceptionInstance;

if(age < 0){
throw new Exception("年龄不能为负数!");
}
catch(Exception e){
    输出("年龄不能为负数!");
}

当Java运行时接收到开发者自行抛出的异常,同样会中止当前的执行流,调到对应的catch块。

自定义异常

  • 所有异常都必须是 Throwable 的子类。
  • 如果希望写一个检查性异常类,则需要继承 Exception 类。
  • 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值