java初级-异常

Exception

Throwable 是所有异常 (Exception) 和 错误(Error) 的父类
我们可以将异常分为两类:
检查异常(Cheaked Exception)
在编译期间产生的异常
例如:
Class clazz = Class.forName(“com.huayu.t1.bird”); //指的是寻找这个类
是Exception的子类 但是不是RuntimeException的子类。
这样的异常必须在编译时处理。
运行时异常(Runtime Exception)
在程序运行的过程中产生的异常
例如:
NullPointerException
ClassCastException ....
RuntimeException 及其子类。。。

注意:程序抛出异常不会让jvm宕机

处理异常的方式:
1.throws关键字 继续往外抛异常
如果异常不能自己进行处理 将异常抛给调用者 如果都不处理 则异常会抛给jvm
Jvm 会将异常信息在控制台中显示。
如:

Public static void f1(){
Class clazz = Class.forName(“com.huayu.t1.Bird”);
}
Public static void f2(){
  f1();
}
main:
  f2();

3.try catch
格式:

 try{
 将可能抛出异常的代码
}catch(异常){ // 捕获的异常
// 处理异常
//记录日志
//继续往外抛
thow e;   //往上一级抛  不过每一级的方法都要加上thows Exception表示可以抛出异常。
}

注:

  1. e.printStrackTrace(); 为打印某异常信息。不需要sysout。
  2. e.getMassage 为异常信息。
    3.try 必须出现 而catch 和finally 两者至少出现一个。
finally 
try{
}catch(){
}finally{}

4.无论如何都会执行的代码。
5.作用:关闭io流等。。。
6.如果产生了异常,改行代码下面的程序不会执行,会被catch捕获到异常
7.Catch的时候 通常会将对应的异常分配好 如:
try{
}catch(){
}catch(){
}
8.catch 可以出现多个 范围小的要放在前面。
9.catch捕获的时候 必须把对应的检查异常写出 或者写Exception。
10.在父子类中使用异常
1>父类方法没有抛出异常,子类重写的方法能否用throws抛出异常? 可以
但是它不能抛出检查异常,只能抛出运行时异常。
2>父类方法抛出了异常,子类重写父类的方法,可以抛出异常,也可以不抛出异常。
父类方法抛出了异常,子类方法不能抛出比父类范围更大,个数更多的检查异常。
异常在平时开发中的使用:
结合日志进行处理。 log4j 来记录日志 开源的jar包

使用log4j 需要下载第三方的jar包

分布式的日志系统 elk

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。