分享一点笔记给你。
- /**
- 异常概述:
- 程序中会出现问题,Java 是完全面向对象的语言,将这些问题也进行了对象的封装.
- 这些问题在程序中出现,Java封装成了对象,由于问题比较多,就存在很多对象.这些对象统称为异常.
- 由于程序中会出现各种问题,存在各种对象,但是这些都有一些共性,都叫做异常,也就组成一个异常的体系.
- 异常体系:
- java.lang.Throwable
- Throwable 类是 Java 语言中所有错误或异常的超类。
- public class Throwable extends Object implements Serializable
- 该类父类是Object 类,并且实现了Serializable(序列化)
- 该类没有被abstract 修饰->有可能可以创建对象.
- 该类没有被final 修饰->该类有可能有子类
- 该类有两个子类 Error (错误) Exception(异常)
- |---Throwable 异常体系的顶层父类
- |---Error 错误
- NoClassDefFoundError 来加载失败, java 类名 JVM 根据类名加载字节码文件. 字节码文件存在.出现该问题.
- 了解.
- 该类还有子类,并且该类的子类大部分的后缀名都是Error ,表示错误,在程序中无法解决.
- |---Exception 异常
- 程序中出现的问题. 编译出现问题,运行时候也可能出现问题...
- 如何查看一个现有的类怎么使用:
- 方案一: 直接查看源代码
- 方案二: 查看API文档说明. 有关于Java 内置类的详细的说明.
- 查看文档:
- 类的描述,是否是abstract 是否是final
- 如果是abstract 就不能创建对象了
- 如果是final 就不能有子类了.
- 查看构造函数:
- 如果构造函数非私有的,Java提供的构造函数一般都是public 的,
- 查看构造函数的参数类型
- 来决定,调用构造函数传递的实参.
- 查看方法:
- 一个方法就是一个独立的功能,找到了合适的方法,就可以方便解决问题.
- Throwable 类的构造函数:
- Throwable() 无参数构造
- Throwable(String message) 有参数构造
- Throwable 类提供的成员方法:
- toString() 该方法返回一个字符串.
- 返回了一个Throwable 对象的描述.
- 重写父类Object 类中的toString 方法.
- getMessage() 获取异常的信息
- printStackTrace()
- 获取异常的栈信息,所有的相关的异常信息.
- 学习Sun 公司提供的类.
- 学习什么? 学习该类是否可以创建对象,该类提供什么功能,如何使用.
- 找到专业的对象,做专业的事情.
- 如果Sun 提供的类的内部的编写(实现)感兴趣,可以查看源代码.
-
-
-
-
-
-
-
- */
- public class Demo1{
- public static void main(String[] args){
- //printArr();
- //Throwable 创建对象.
- Throwable th=new Throwable();
- // 打印对象名 默认 : 类名@哈希码值
- // 该对象仅仅打印了一个类名
- System.out.println(th);
- // toString 是父类Object 类中的方法. 子类肯定重写了该方法.
- System.out.println(th.toString());
-
- // 调用Throwable 类的有参数构造.创建对象. 通过有参数构造给Throwable 传递了异常的字符串形式的描述.
- Throwable th1=new Throwable("头晕,恶心");
- System.out.println(th1);
- // 获取异常的描述.
- System.out.println(th1.getMessage());
- // 获取异常对象的所有的相关的异常信息
- System.out.println(th1.printStackTrace());
-
-
-
-
- // 自定义MyThrowable 类
- MyThrowable myth1=new MyThrowable();
- System.out.println(myth1);
- System.out.println(myth1.toString());
- // 自定义类提供了有参数构造,可以接收字符串形式的信息
- MyThrowable myth2=new MyThrowable("头晕,恶心");
- System.out.println(myth2);
- // 获取信息
- System.out.println(myth2.getMessage());
-
-
- }
- public static void printArr(){
- int[] arr=new int[3];
- System.out.println(arr[3]); // 程序运行中,会出现问题,JVM 将问题进行了对象的封装. 就是异常.
- }
- }
- class MyThrowable{
- private String message;
-
- MyThrowable(){
-
- }
-
- MyThrowable(String mess){
- this.message=mess;
- }
-
- public String getMessage(){
- return this.message;
- }
-
- /**
- 重写父类toString方法
- */
- public String toString(){
- return "MyThrowable: "+this.message;
- }
- }
- /**
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
- at Demo1.printArr(Demo1.java:7)
- at Demo1.main(Demo1.java:3)
-
- Exception in thread "main" java.lang.NoClassDefFoundError
- */
复制代码 |