9 java异常处理的使用以及基本原理

何为异常?

异常是一个汉语词语,读音:yì cháng,指非正常的;不同于平常的;非常。出自《后汉书·皇后纪上·光烈阴皇后》

什么是java异常

编译时异常和运行时异常。

  1. 编译异常是在编译阶段出现的错误,这个很好理解并且很好解决。
  2. 运行时异常是指在程序的运行过程中,出现的异常。例如 我们有一个读取D盘文件的程序,在我们编译的时候并没有错误,可实际运行中我们却发现电脑并没有D盘,此时就会出现没有该文件的异常。所以我们要对类似的异常进行处理。

try catch finally 总结

1无return且未出现异常时try->finally,出现异常时try->catch->finally。

2try或catch中有return时,返回数据为基本类型则finally代码块执行完后不会更改,返回值为引用类型,return保存的是引用地址,finally块中代码执行完会改变返回值。

3finally中存在return时会覆盖try或catch中的返回值信息,若try或catch中抛出异常也会被finally中的return覆盖。

异常产生的原因

下面是一个简单的java例子,这是一个实现截图功能的一段代码。那么为什么需要异常处理呢。在处理异常的时候 我们首先需要知道这段代码有可能出现什么样的异常。

try {
                Robot robot = new Robot();
                String format = "jpg";
                String fileName = "FullScreenshot3333." + format;

                Rectangle screenRect = new 
                Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
                BufferedImage screenFullImage = robot.createScreenCapture(screenRect);
                ImageIO.write(screenFullImage, format, new File(fileName));

                System.out.println("A full screenshot saved!");
  } catch (AWTException | IOException ex) {
                System.err.println(ex);
  }  

我们接着对上面的代码进行分析,首先异常分为 编译时异常和运行时异常 这个在开头的时候已经说过一次。

屏幕截图 2024-10-08 115145.png

可以看到IOException继承Exception这个类。

屏幕截图 2024-10-08 115323.png

Java中有多少异常类。

如何处理异常

说来简单:写正确的代码。编译时异常处理尤为简单,语法错误编译器就把错误给提示出来了。运行时异常才是不太容易发现的问题。发现每一个可能出现的错误,并且即使的封堵。例如 我们有一句读取D盘下的文件。那么就要判断没有D盘的情况下应该怎么办。以此类推。

同类文章