1 此类作用
2 此类常用的方法
3 此类相关的面试题和练习
异常是Java用于描述程序非正常情况的一组类。
顶级父类:Throwable 要想成为一个异常类 就必须要直接或者间接继承Throwable类
两个构造方法
1:无参构造 Throwable throw = new Throwable();
2:有参构造 Throwable throw = new Throwable(String message); //message适用于描述出现该异常的原因
三个常用方法:
1.getMessage() :获取到产生此异常的原因
2.printStackTrace():打印堆栈信息
3.toString():获取异常的描述
Throwable throwable = new Throwable();//无参构造方法
Throwable throwable1=new Throwable("我是一个异常,快来处理我把!"); //有参构造
System.out.println(throwable.getCause()); //null
System.out.println(throwable1.getCause());//null
System.out.println(throwable.getMessage()); //null
System.out.println(throwable1.getMessage()); // 我是一个异常,快来处理我把!
throwable.printStackTrace();
throwable1.printStackTrace();
System.out.println(throwable.toString()); //null
System.out.println(throwable1.toString());// 是一个异常,快来处理我把!
**(可以看到 在产生异常之后,我们迫切想知道的是在程序中产生异常的原因,并通过合理的方式区改正我们的代码并修复它。)**
Error错误类
子类1:Error 错误
此类是用于描述在程序中用业务逻辑无法处理的严重错误,是程序员无法处理的,程序员也无需关心。
出现Error错误一般不是由于你编写的代码出现问题,而是由于JVM运行你这段代码出现了问题,比如堆溢出,配置文件出错等,
这些你是无法人为的在你代码里可以保证的,必须要额外的去操作,重新配置虚拟机,修改配置文件等等。
package Error;
public class ErrorDemo {
public static void main(String[] args) {
Error error = new Error();
Error error1 = new Error("AAAAAA");
System.out.println(error.getMessage()); //null
System.out.println(error1.getMessage());//AAAAA
error.printStackTrace();
error1.printStackTrace();
//java.lang.Error
// at Error.ErrorDemo.main(ErrorDemo.java:7)
//java.lang.Error: AAAAAA
// at Error.ErrorDemo.main(ErrorDemo.java:8)
}
}
Exception例外,意料之外
package Exception;
public class ExceptionDemo {
public static void main(String[] args) {
Exception exception =new Exception();
Exception exception1 =new Exception("奥里给 干了兄弟们");
System.out.println(exception.getMessage()); //null
System.out.println(exception1.getMessage()); //奥里给 干了兄弟们
exception.printStackTrace();
exception1.printStackTrace();
// at Exception.ExceptionDemo.main(ExceptionDemo.java:5)
// java.lang.Exception: 奥里给 干了兄弟们
// at Exception.ExceptionDemo.main(ExceptionDemo.java:6)
System.out.println(exception.toString());
System.out.println(exception1.toString());
// java.lang.Exception
// java.lang.Exception: 奥里给 干了兄弟们
}
}
学完了构造方法,,和三个常用的方法之后,我们就来探讨一下常见的异常有哪些?
异常分为检查时异常和运行时异常
1.检查时异常: 在你使用该类的时候,编译器强制要求要处理的异常,通常是因为该类中有它自己无法处理的或者自己不想处理的异常,那么此时调用者就必须对该异常进行处理。
2.运行时异常: 在我们编译的时候,编译器并不会提示你会产生该异常,只有在程序运行时,出现了该异常,编译器才会报异常。称为运行时异常。
下图就是常见的异常分类,我们都来测试一下。
package Exception;
import java.text.SimpleDateFormat;
public class ExceptionDemo1 {
public static void main(String[] args) {
//long[][][] a=new long[1024][1024][1024]; 1.java.lang.OutOfMemoryError: Java heap space 内存爆了
String str="";
// str=null; System.out.println(str.length()); 2.java.lang.NullPointerException 空指针
// System.out.println(str.charAt(1)); 3.java.lang.StringIndexOutOfBoundsException: String index out of range: 1 字符串下标越界
int[] arr=new int[1];
//System.out.println(arr[2]); 4.java.lang.ArrayIndexOutOfBoundsException: 2
//System.out.println(2/0); 5.java.lang.ArithmeticException: / by zero
//System.out.println(new SimpleDateFormat("yyyy-MM-dd").parse("2002/3/4")); 6.ParseException: Unparseable date: "1827/11/11"
//int a=Integer.parseInt("abc"); 7.java.lang.NumberFormatException: For input string: "abc"
}
}
说完了一些比较常见的异常,接下来就是作为程序员如何去处理这些异常呢?
方式1:当本方法没有能力去处理这个异常的时候,就去找人帮忙,意思就是把自己的异常向外抛出,本方法不去处理,当一个甩手掌柜,谁用我谁来处理。
使用throws关键字 在方法名的后面抛出异常
public void method1() throws Exception{
int a=1;
int b=0;
System.out.println(a/b);
}
方式2:Java提供了一套处理异常的模板,用此模板 我们就可以来处理方法产生的异常了。
public void method2() throws Exception{
try {
int a=1;
int b=0;
System.out.println(a/b);
}catch (Exception e){
e.printStackTrace();//这里就用到了 那个打印原因的方法
}
}
那么我们说完了一些常见的异常以及异常的类型以及处理方式。可是在开发中有一些问题,在Java已经提供的异常类中,并不能很好的满足我们的需求。
此时 我们联想到了,任何作为异常的类都必须间接或直接实现Throwable类,那么我们是不是也可以自定义一个类 去实现Throwable类,然后作为我们自己的异常类呢。说干就干
MyException myException = new MyException("22");
System.out.println(myException.getMessage());
package Exception;
public class MyException extends Throwable {
@Override
public String getMessage() {
return super.getMessage();
}
@Override
public void printStackTrace() {
super.printStackTrace();
}
@Override
public String toString() {
return super.toString();
}
public MyException(String message) {
super("这是我 自定义的异常!");
}
}
制作不易,有问题请留言啊!!!


