微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

异常

2021.02.27
第21次记录
今天吴孟达竟然走了,童年的回忆啊

**课堂笔记:**
1 java的异常处理机制
1.1 异常在java中以类和对象的形式存在,异常的继承结构可以使用UML图来描述
UML图工具有:Rational Rose(收费的)、starUML等...
Object
Object下有Throwable(可抛出的)
Throwable下有两个分支:Error(不可处理,直接退出JVM)和Exception(可处理的)
Exception下有两个分支:
Exception的直接子类:编译时异常(要求程序员在编写程序阶段预先对这些异常进行处理)
RuntimeException:运行时异常(在编写程序阶段程序员可以预先处理,也可以不管)
1.2 编译时异常和运行时异常,都是发生在运行阶段,编译阶段异常是不会发生的。
编译时异常因为什么而得名?
因为编译时异常必须在编译阶段预先处理,如果不处理编译器报错,因此得名。
所有异常都是在运行阶段发生的。因为只有程序运行阶段才可以new对象,因为异常的发生就是new异常对象。
1.3 编译时异常和运行时异常的区别?
编译时异常一般发生的概率比较高,运行时异常一般发生的概率比较低。
1.4 编译时异常又叫受检异常、受控异常。
运行时异常又叫未受检异常(UnCheckedException)、非受控异常。
1.5 java语言中对异常处理有两种方式:
第一种:在方法声明的位置上,使用throws关键字,抛给上一级;
第二种:使用try...catch方式进行异常捕捉。
异常发生之后,如果我选择了上抛,抛给了我的调用者,
调用者需要对这个异常继续处理,那么调用者处理这个异常同样有两种处理方式。
1.6 注意:java中如果发生异常之后如果一直上抛,最终抛给了main方法,main方法继续
上抛,抛给了调用者JVM,JVM知道这个异常发生,只有一个结果。终止java程序的执行。
2.什么是UML?有什么用?
2.1 UML是一种统一建模语言。
一种图表式语言(画图用的)。
2.2 UML不只是java中使用。只要是面向对象的编程语言,都有UML。
一般画UML图的都是软件架构师或者是系统分析师。软件设计人员使用UML。
在UML图中可以描述类和类之间的关系,程序执行的流程,对象的状态等

**代码演示1:**

```java
public class ExceptionText02 {
//第一种方式
/* public static void main(String[] args) throws ClassNotFoundException{
doSome();
}*/
//第二种方式
public static void main(String[] args) {
try {
doSome();
} catch (ClassNotFoundException e) {
e.printstacktrace();
}
}
public static void doSome() throws ClassNotFoundException{
System.out.println("dosome");
}
}
```
输出结果:
dosome

**代码演示2:**

```java
public class ExceptionText03 {
public static void main(String[] args) {
System.out.println("main begin");
//这里一般不建议继续上抛给main()方法,因为一旦给了main方法就会继续抛给JVM,最后只能终止程序。
//所以,一般main方法中的异常建议使用try...catch进行捕捉,main不继续上抛。
//这里采用第二种方法
try {
m1();
} catch (FileNotFoundException e) {
System.out.println("文件不存在,可能路径错误");
}
System.out.println("main over");
}

private static void m1() throws FileNotFoundException {
System.out.println("m1 begin");
m2();
System.out.println("m1 over");
}
/*这抛IOException可以是因为,它是FileNotFoundException的父类
IOException包括FileNotFoundException。
直接抛Exception也可以,因为Exception包括了所有的异常。
throws也可以抛多个异常,中间用逗号隔开*/
private static void m2() throws FileNotFoundException{
System.out.println("m2 begin");
m3();
System.out.println("m2 over");
}

protected static void m3() throws FileNotFoundException{
System.out.println("m3 begin");
//创建一个输入流对象,该流指向一个文件
//采用第一种方法:在方法声明的位置上上抛
new FileInputStream("E:\\develop\\HelloWorld.java");
System.out.println("m3 over");
}
}
```
输出结果:
main begin
m1 begin
m2 begin
m3 begin
m3 over
m2 over
m1 over
main over

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐