鱼C论坛

 找回密码
 立即注册
查看: 2759|回复: 0

[学习笔记] Java暑期学习Day32

[复制链接]
发表于 2017-8-5 23:47:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天是第32天,20170805,为了美好的生活前进


                               
登录/注册后可看大图


① throws/throw 关键字
  a.在catch区块进行完部分错误处理时,可以使用throw(!!注意不是throws
如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。 )将异常再抛出,实际上,我们可以在任何流程中抛出异常,不一定要在catch区块中,在流程中抛出异常,就直接跳离原有的流程,可以抛出受检或非受检异常。
  -!- 如果抛出的是受检异常,此时就必须在方法上使用throws声明。
                   非受检异常                不使用


b.如果使用继承时,父类某个方法声明throws某些异常,子类重新定义该方法时
可以
  1.不声明throws任何异常
  2.throws父类该方法中声明的某些异常
  3.throws父类该方法中声明异常的子类
不可以
  1.throws父类方法中未声明的其他异常
  2.throws父类方法中声明异常的父类


② 自定义异常
  重新抛出异常时,除了将捕捉到的异常直接抛出,也可以考虑为应用程序自定义专属的异常类别,让异常更能表现应用程序特有的错误信息。
  自定义异常类别时,可以继承Throwable、Error、 Exception的相关子类(即所有异常都必须是 Throwable 的子类,通常建议继承自Exception或其子类,如果不是继承自Error或RuntimeException,那么就会是受检异常。


  public class Ce extends Exception{                             //自定义受检异常
         ...
  }


-!-  如果希望写一个检查性异常类,则需要继承 Exception 类
      如果想写一个运行时异常类,那么需要继承 RuntimeException 类



③ 堆栈追踪(Stack Trace)
  
  1. package exception;

  2. public class StackTraceDemo {
  3.         public static void main(String[] args) {

  4.                 try {
  5.                         c();
  6.                 } catch (NullPointerException ex) {
  7.                         ex.printStackTrace();

  8.                 }

  9.         }

  10.         static void c() {
  11.                 b();
  12.         }

  13.         static void b() {
  14.                 a();
  15.         }

  16.         static String a() {
  17.                 String text = null;
  18.                 return text.toUpperCase();
  19.         }

  20. }
复制代码

查看堆栈追踪最简单的方法,就是直接调用异常对象的printStackTrace()。

上面代码的运行结果是——
  java.lang.NullPointerException
at exception.StackTraceDemo.a(StackTraceDemo.java:25)
at exception.StackTraceDemo.b(StackTraceDemo.java:20)
at exception.StackTraceDemo.c(StackTraceDemo.java:16)
at exception.StackTraceDemo.main(StackTraceDemo.java:7)



  堆栈追踪信息中显示了异常类型,最顶层是异常的根源,以下是调用方法的顺序,程序代码行数是对应于当初的程序原始码。





评分

参与人数 1鱼币 +2 收起 理由
小甲鱼 + 2

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 01:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表