JAVA学习03 异常处理

一、什么是异常

异常就是一种对象(Exception),表示阻止程序正常执行的错误或情

  • 在程序运行的过程中,如果JVM检测出一个不可能执行的操作,就会出现运行时错误
  • 在Java中,运行时错误(Runtime Error)会作为异常(对象)抛出
  • 如果异常没有被处理,程序将会非正常终止

异常处理 - 使程序可以继续运行或者优雅地终止
方法抛出异常,调用者可以捕获以及处理该异常

  • 恢复正常的程序执行
  • 进行日志处理
  • 以某些方式提醒用户(错误提示、对话框等)

二、异常及异常处理

异常处理通常使用try-catch来实现。
下面一个异常处理的例子(5/0):

public class ExceptionDemo{ 
    public static int division(int num1, int num2){ 
    	int result = Integer.MIN_VALUE; 
    	try{ //监控异常
    	    result = num1 / num2; 
    	}catch(Exception e){ //捕获异常
    	    e.printStackTrace(); //异常处理
    	} 
    	return result; 
    } 
    public static void main(String[] args) { 
    int result = division(5, 0); 
    System.out.println("result = " + result); 
    }
} 

三、异常处理机制

可以使程序处理非预期的情景,并继续正常的执行
组成:

  • try:监控有可能产生异常的语句块
  • catch:以合理的方式捕获并处理异常
  • finally:不管有无异常,一定会执行的语句块(一般用来释放资源等)
  • throw:手动引发异常
  • hrows:指定由方法引发的异常
try{
    //所监控的有可能产生异常的语句块
}catch(Exception e){//捕获异常,e是所捕获的异常对象
    //异常处理:打印异常信息、日志记录等 
}finally{
    //不管有无异常,一定会执行的语句块(一般用来释放资源)
}

如果捕获的异常不匹配的话程序会直接中断执行

四、异常类的层次结构

在这里插入图片描述
Error:系统级的错误

  • AwtError:界面的一些类库出现的错误
  • LinkageError:类的依赖出现的错误
  • VitualMachineError:虚拟机错误
    **Exception:**可捕获可处理的异常
  • AWTException:界面的组件出现的错误
  • SQLException:连接数据库时出现的错误(例如语句错误)
  • IOException:文件错误出现的错误
  • RunTimeException:运行时异常(特殊,可以不捕获)

五、常见的异常类型

在这里插入图片描述

六、多重catch块

try块中的代码可能会引发多种类型的异常
当引发异常时,会按catch的顺序进行匹配异常类型,并执行第一个匹配的catch语句

try { 
    int num1 = Integer.parseInt(strNum1);
    .......................................... 
} catch (InputMismatchException e) { 
    e.printStackTrace(); 
} catch (ArithmeticException e) {  
    e.printStackTrace(); 
} 
//JDK7后的简化写法(multi-catch feature) 
catch(Exception1 | Exception2 | Exception3 | ..  ex){}

七、try-catch-finally

确保无论是否发生异常, finally块中的代码总能被执行
注意:

  • 遇到System.exit(0)语句时是不执行finally块 的唯一情况(即使在有return的时候)
  • 使用finally块的场合:如果程序开启了相关资 源(文件、数据库等),为了避免因出现错误没 有关闭,就可以使用finally块在执行完毕后强制 要求关闭所有打开的资源
  • 使用finally时,可以省略catch块

八、声明、抛出、捕获异常

声明异常(Declaring Exception)

  • 每个方法都必须声明它可能抛出的必检异常的类型,这称为声明异常
  • 不要求显式声明Error和RuntimeException(免检异常),其他异常必须在方法头显式声明
method() throws Exception1, Exception2, Exception3...//声明异常

public static void main(String[] args) { 
    try { 
    //谁调用,谁处理
    //调用者捕获并处理异常 
    //或继续抛出异常(链式异常)
    } catch (Exception e) 
    { e.printStackTrace(); } 
}

九、自定义异常类

可以通过继承Exception类来定义一个自定义异常类

  • 尽量使用Java中提供的异常类而不要创建自己的异常类
  • 如果遇到一个不能用预定义异常类恰当描述的问题,可以创建自定义异常类
public class cz extends Exception{
    //重写父类的两个构造方法即可
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 异常是指在程序运行过程中出现的一些错误或异常情况,例如除数为零、数组下标越界等。Java 异常可以分为两种类型:检查异常和非检查异常。 检查异常是指在编译期间就能够发现的异常,必须在代码中进行处理或者通过抛出异常来通知调用者处理。例如,FileNotFoundException 就是一种检查异常。 非检查异常是指在程序运行时才能够发现的异常,这种异常通常是由 Java 虚拟机抛出的。例如,NullPointerException 就是一种非检查异常Java 异常处理机制可以通过 try-catch-finally 语句来实现。在 try 块中执行可能引发异常的代码,在 catch 块中捕获异常并进行处理,在 finally 块中释放资源。 以下是一个简单的示例代码: ```java try { // 可能引发异常的代码 } catch (Exception e) { // 异常处理逻辑 } finally { // 释放资源的代码 } ``` 在上面的代码中,try 块中的代码可能会引发异常,如果出现异常,程序会跳转到 catch 块中进行异常处理。无论是否发生异常,finally 块中的代码都会被执行。 除了使用 try-catch-finally 语句来处理异常,还可以使用 throws 关键字将异常抛给调用者处理。例如: ```java public void readFile() throws IOException { // 可能引发 IOException 异常的代码 } ``` 在上面的代码中,readFile 方法可能会引发 IOException 异常,如果出现异常,将会抛出给调用者处理。 总之,了解 Java 异常处理机制对于编写高质量、健壮的 Java 代码是非常重要的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值