• 大数据第十四天


    1、Java中异常关系图

    2、编译异常,运行时异常概念

    运行时异常

    是指编译程序不要求强制处置的异常。一般是指程序设计时的逻辑错误,是程序员应该积极避免其出现的异常。

    java.lang.RuntimeException类及它的子类都是运行时异常。

    对于这类异常,可以不作处理,因为这类异常很普遍,若全处理可能对程序的可读性和运行效率产生影响。

    编译异常

    是指编译程序要求必须处置的异常。

    Java程序必须捕获或声明所有编译时异常。

    对于这类异常,如果程序不处理,可能带来意想不到的结果,编译都不能通过。

    3、常用的异常对象包含的方法:

    getMessage():返回该异常的详细描述对象

    printStackTrace():将异常的跟踪栈信息打印出来

    printStackTrace(PrintStresm s ):将异常的跟踪栈信息输出到指定的输出流

    getStackTrace():返回该异常的跟踪栈信息

    4、finally块中语句执行的特点,什么情况下会使try,catch中的return失效?

    在finally块中使用return或者throw等导致方法终止的语句时

    5、throws关键字用法

      使用throws抛出异常的思路是,当前方法不知道如何处理这种类型的异常,该异常应该由上一级的调用者处理;如果main方法

    也不知道如何处理这种类型异常,也可以使用throws继续声明抛出异常,该异常将交给JVM处理。JVM对异常的处理方法是,打印异常的跟踪栈信息,并终止程序运行,这就是前面程序在遇到异常后自动结束的原因。

      throws声明抛出异常只能在方法签名中使用,throws可以声明抛出多个异常类,多个异常类之间用逗号隔开,其语法格式是:

    方法签名+throws Exception1,Exception2...

    一旦一个方法使用了throws关键字抛出异常,程序就无须使用try,catch块来捕获该异常了。

    6、throw关键字用法

    自行抛出异常

    在程序中抛出异常的话,需要使用throw语句。

    首先要生成异常类对象,其语法格式如下:

    IOException e = new IOException();

    throw e;

    可以抛出的异常必须是Throwable或其子类的实例。具体的异常可以查看API文档。

    • 如果throw语句抛出的异常是Checked异常,则该throw语句要么处于try块里,显式捕获该异常,要么放在一个带throws声明抛出的方法中,即把该异常交给方法的调用者处理;

    如果throw语句抛出的是Runtime异常,则该语句无须放在try块中,也无须放在带throws声明的方法:这种运行时异常可以捕获,也可以完全不理会。

    7、编译异常和运行异常,各有什么处理方式?

    编译异常:必须处理之后才能正常编译

    运行时异常,一是遇到错误就终止程序的运行,即不对异常进行处理;

      二是由程序员在编写程序时,就考虑到错误的检测、错误消息的提示,在抛给Java

    运行时环境的时候,就将这个异常对象捕获,再进行处理(打印提示信息等)

    8、如何自定义异常类?

    定义异类时通常提供两个构造方法,一个是无参的,一个是带有一个字符串的构造方法,这个

    字符串将作为该异常对象的描述信息,也就是异常对象的getMessage方法的返回着。

    自定义一个异常的语法类如下:

    public class MyException extends Exception{

      //无参构造方法

      public MyException(){}

      //带一个字符串的构造方法,用来传递异常信息

      public MyException(String msg ){

      super(msg);

      }

    }

    带参的构造方法将字符串传递给父类的message变量,即该异常的描述信息。

    自行定义一个RuntimeException。

    只需要将上述代码中的Exception改为RuntimeException即可。

  • 相关阅读:
    SpringCloud框架介绍
    JMX的介绍
    idea下的terminal中设置git的bash
    利用kafka自带的zookeeper搭建kafka集群
    gRPC教程
    C#使用LINQ查询集合
    C# winform 更换电脑桌面壁纸
    SQL注入攻击
    UML
    C#非对称加密解密(DEC加密算法)
  • 原文地址:https://www.cnblogs.com/zhaoyongcx/p/6641948.html
Copyright © 2020-2023  润新知