2023年11月29日发(作者:)

RuntimeException异常处理汇总

Java中所有异常的⽗类是Throwable类,在Throwable类下有两⼤⼦类:

⼀个是Error类,指系统错误异常,例如:VirtualMachineError 虚拟机错误,ThreadDeath 线程死锁。⼀般如果是Error类的异常的话,就是

程序的硬伤,就好⽐是⼯⼚⾥断⽔断电,机器损坏了。

另⼀个是Exception类,指编码、环境、⽤户操作输⼊等异常,这个是⽐较常见的异常类,Exception类下⾯⼜有两个⼦

类,RuntimeException ⾮检查异常和检查异常,⾮检查⼜称为运⾏时异常,在RuntimeException异常中有⼏个常见的⼦类,例如:

InputMismatchException 输⼊不匹配异常

ArithmeticException 算术运算异常

NullPointerException 空指针异常

ArrayIndexOutOfBoundsException 数组下标越界异常

ClassCastException 类型转换异常

检查异常中的⼦类有:

IOException ⽂件异常

SQLException SQL数据库错误异常

在实际的开发中,处理异常⼀般使⽤以下三种⽅式:

⼀、使⽤try-catch语句块捕获和处理异常

使⽤try-catch 以及 try-catch-finally 来捕获和处理异常时,catch⾥的异常列表⼀般是⼦类在前,⽗类在后,不然编译时程序会报错。⽰例如

下:

1 import ismatchException;

2 import r;

3

4 public class 异常处理 {

5

6 public static void main(String[] args) {

7

8 n("请输⼊你的年龄");

9 Scanner input = new Scanner();

10 try{

11 n("请输⼊第⼀个数:");

12 int one = t();

13 n("请输⼊第⼆个数:");

14 int two = t();

15 n("两数相除结果为:"+one/two);

16 }catch(InputMismatchException e){

17 n("请输⼊整数");

18 }catch(ArithmeticException e){

19 n("除数不能为零");

20 }catch(Exception e){

21 n("程序执⾏中出现异常");

22 }finally{

23 n("程序执⾏结束!");

24 }

25

26

27

28 }

29

30 }

5 ThrowDemo td = new ThrowDemo();

6 try {

7 (10, 0);

8 } catch (Exception e) {

9 n("异常抛出");

10 }

11 }

12

13 public void test(int a,int b) throws Exception{

14 int c = a/b;

15 n("计算结果为:"+c);

16

17 }

18

19 }

三、⾃定义异常类

有的时候我们抛出的异常在Throwable类中没有定义,就需要我们⾃⼰⾃定义⼀个异常的类,⽐如我们实际开发中需要⽤到⼀个开车别喝

的异常,我们就可以定义⼀个这样的异常类来处理我们项⽬中需要处理的异常。

⾃定义异常类的语法:

class ⾃定义异常类 extends 异常类型{}

⾃定义异常类需要继承和它类型相近的Throwable类⾥⾯的⼦类,或者是我们直接让⾃定义异常类继承Exception类,⽰例如下:

1 /**

2 * ⾃定义⼀个异常类

3 * @author lenovo

4 *

5 */

6 public class MyThrow extends Exception{

7

8 public MyThrow(){

9

10 }

11

12 public MyThrow(String mess){

13 super(mess);

14 }

15 }

使⽤这个异常类的⽰例如下:

at 1(:17)

at 2(:22)

... 1 more

Java异常处理实际应⽤中的经验与总结:

1、处理运⾏时异常时,采⽤逻辑去合理规避同时辅助try-catch处理;

2、在多重catch块后⾯,可以加⼀个catchException)来处理可能会被遗漏的异常;

3、对于不确定的代码,也可以加上try-catch,处理潜在异常;

4、尽量去处理异常,切忌只是简单的调⽤printStackTrace()去打印输出;

5、具体如何处理异常,要根据不同的业务需求和异常类型去决定;

6、尽量添加finally语句块去释放占⽤的资源。