Java-oop、异常和日志

异常

1.异常的概念:

        异常就是在程序运行时发生的异常事件,和正常情况不一样,有错误出现。在java中,阻止当前方法或作用域的情况,称之为异常。

2.异常的分类:

​编辑异常的顶层是:Throwable。Error:是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。此类错误一般表示代码运行时JVM出现问题。通常有Virtual MachineError(虚拟机运行错误),NoClassDefFoundError(类定义错误)等。比如说当jvm耗完可用内存时,将出现OutOfMemoryError。此类错误发生时,JVM将终止线程。非代码性错误。因此,当此类错误发生时,应用不应该去处理此类错误。

Exception:程序本身可以捕获并且可以处理的异常。RuntimeException异常(运行时异常):表示JVM在运行期间可能出现的错误。编译器不会检查此类异常,并且不要求处理异常,比如用空值对象的引用(NullPointerException)、数组下标越界(ArrayIndexOutBoundException)等。此类异常属于不可查异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理,也可以不处理。非运行时异常(编译时异常):编译器会检查此类异常,如果程序中出现此类异常,比如说IOException,必须对该异常进行处理,要么使用try-catch捕获,要么使用throws语句抛出,否则编译不通过。

Error 和 Exception的区别:
Error通常是灾难性的致命的错误,是程序无法控制和处理的,用以描述Java运行系统中的内部错误以及资源耗尽的错误;当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;

Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。

3.常见的异常:

异常类解释说明:

NullPointerException空指针异常:调用了未经初始化的对象或者是不存在的对象。ClassNotFoundException指定的类不存在IndexOutOfBoundsException数组下标越界异常。IllegalArgumentException方法的参数错误ArithmeticException数学运算异常,如:除零异常InputMisMatchException接收的数据类型与实际输入的类型不匹配异常NumberFormatException字符串转换为数字异常SQLException操作数据库异常IOException文件读写异常。

4.异常的处理:

java当中的异常一般是通过5个关键字来处理的:try、catch、finally、throw、throws

try:监控区域,一般里面放可能出现异常的代码
catch:捕获异常,参数是想要捕获的异常类型
finally:处理善后,里面的代码无论如何都会执行
throw:在语句中抛出异常,后面只能有一个异常对象
throws:在方法中声明可能要抛出的各种异常,后面可以跟多个异常类一般的语法形式为:

try{  

        //可能会发生异常的程序代码     

        }catch(Type1 id1) { 

          //捕获并处理try抛出的异常类型Type1   

        }catch(Type2 id2) {           //捕获并处理try抛出的异常类型Type2    

         }finally{           //无论是否发生异常,都将执行的语句块        }

try 块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。

catch 块:用于处理try捕获到的异常。
finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。其中:Try{}catch(){} finally{}catch代码块可以有多个(有多个是子类异常必须写在前面),其次它也可以省略;Finally 也可以省略,但是catch和finally两个不能同时省略。在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU。

5.自定义异常自定义异常:

用户可以自定义异常,只需继承Exception类即可。

步骤:

1.创建自定义异常类。
2.在方法中通过throw关键字抛出异常对象。
3.如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
4.在出现异常方法的调用者中捕获并处理异常。

6.Throw 和throws 

抛出异常如果一个方法可能会出现异常,但没有能力处理这种异常,就可以使用throw和throws语句来抛出异常。throw一般写在方法体里面,而throws语句用在方法定义时声明该方法要抛出的异常类型,如果抛出的是Exception异常类型,则该方法被声明为抛出所有的异常。

Throw 和throws 的区别

1.Throw写在方法体里面;而Throws写在方法名的后面

2.Throw 后面只能跟一个异常的对象;

而Throws 后面可以跟的是异常的类,且可以跟很多个异常类。​

日志的作用:

日志记录了系统行为的时间、地点、状态等相关信息,能够帮助我们了解并监控系统状态,在发生错误或者接近某种危险状态时能够及时提醒我们处理,同时在系统产生问题时,能够帮助我们快速的定位、诊断并解决问题。

日志的级别

DEBUG:调试级别的⽇志

INFO:正常级别的⽇志

WARN:警告级别的⽇志

ERROR:错误级别的⽇志

FATAL:致命级别的⽇志
 

级别:FATAL > ERROR > WARN > INFO > DEBUG。

程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。

  • 26
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值