复习:异常:概念明晰 / throw / try...catch / finally / 性能
万物皆对象。
Java/C#需要将异常信息封装成对象,并内置了很多很多的Exception类。
Java中的RuntimeExcepition和C#中的Exception类似,最主要的成员包括:} catch (RuntimeException e) { System.out.println(e.getMessage());
throw new RuntimeException("成绩不能小于0或大于100");
System.out.println(e.getStackTrace());
System.out.println(e.toString());
throw new RuntimeException("成绩不能小于0或大于100", new NullPointerException());
System.out.println(e.getCause());
Exception下还有一些子类,常见的有:
声明一个类,继承自Exception,就可以得到一个自定义异常。
class AbsenceException extends RuntimeException{
所以我们可以抛出特定的异常:
throw new IllegalArgumentException("成绩不能小于0或大于100");
捕获时也可以指定异常的类型:
} catch (IllegalArgumentException e) {
还可以根据不同的异常类型,进行不同的处理(让不同的Exception被不同的catch块处理)
} catch (IllegalArgumentException e) { System.out.println("IllegalArgumentException 异常被捕获"); } catch (Exception e) { System.out.println("Exception 异常被捕获");
注意:越是具体(子类)的异常,越是要放在前面,否则编译无法通过,因为子类异常也会直接被之前的父类catch捕获。
throw...try...catch:
异常,什么时候抛出(throw)?什么时候捕获(catch)?捕获之后怎么处理?
finally:如果仅仅是为了释放资源,推荐使用语法糖:try...with(Java)或using块(C#)
多快好省!前端后端,线上线下,名师精讲
更多了解 加: