博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11 异常, 日志, 断言和调试
阅读量:5959 次
发布时间:2019-06-19

本文共 2016 字,大约阅读时间需要 6 分钟。

处理异常

java程序设计中, 异常对象都是派生于Throwable类的一个实例, 如果java中内置的异常类不能够满足要求, 用户可以自己创建自己的异常类.

Error 类层次结构描述了java运行时系统的内部错误和资源耗尽错误. 应用程序不应该抛出这种类型的对象, 如果出现了内部错误, 除了通知用户, 并尽力使程序安全地终止之外, 也没无能为力了, 这种情况很少出现.

需要主要关注的是 Exception层次结构, 这个层次结构分为两个分支: 有程序错误导致的异常属于 RuntimeException, 另外的属于另一个分支, 类似 IOException

RuntimeException: 例如 错误类型转换, 数组访问越界, 访问空指针 等等

如果出现 RuntimeException, 那肯定是你的问题, 应该检查程序, 例如数组越界等等.

IOException: 例如: 试图在文件尾部后面读取文件, 试图打开一个错误格式的URL, 试图根据给定的字符串查找Class对象, 而这个字符串表示的类并不存在.

IOException: 使用判断和try catch来进行处理, 比如错误格式的URL, 在使用之前, 你要首先判断这个格式是否符合URL规则.

如果遇到了无法处理的情况, 那么java的方法可以抛出一个异常. 例如: public FileInputStream(String name) throws FileNotFoundException

java语言规范将派生于Error类或RuntimeException类的所有异常称为未检查异常, 所有其他的异常称为已检查异常.

public Image loadImage(String s) throws EOFException, MalFormedURLException ( 抛出多个异常 )

Public String readData(Scanner in) throws EOFException {    while () {        if (!in.hasNext()) {            if (n < len) throw new EOFException();        }    }}
View Code

创建异常类

class FileFormatException extends IOException {

  public FileFormatException() {}

  public FileFormatException(String gripe) {

    super(gripe);

  }

}

}

捕获异常

try{} catch() {}

public void read(String filename) {    try {          InputStream in = new FIreInputStream(filename);          int b;          while ((b = in.read()) != -1) {                 // process input          }        } catch (IOException exception) {         exception.printStackTrace();    }}
View Code

finally 子句, 无论是否发生异常都会执行.

使用异常机制的建议

1) 异常处理不能代替简单的测试

2) 不要过分的细化异常

3) 利用异常的层次接口, 不要只抛出 RuntimeException, 应该找到适当的子类或者自己定义的类.

4) 不要压制异常

5) 在检测错误时, "苛刻比放任更好"

6) 不要羞于传递异常

调试技术

1) 打印变量值, System.out.println("x=" + x);   // 你想要查看哪个变量的值

2) 在每一个类中放置一个main方法, 针对每一个类进行单元测试. ( 查看单元测试的自己的具体blog)

3) 利用 throwable 类提供的 printStackTrace 方法, 可以从任何一个异常对象中获得堆栈情况.

4) 错误信息保存, java MyProgram 2>errors.txt  // 还是类似linux中得重定向

5) jconsole processID ( 这个processID 是进程号, unix 下用 ps 命令查看, windows 用任务管理器查看 ) 这样会有一个图形界面.

6) 使用调试器, 例如 exclipse 单步跟踪等

 

 

转载于:https://www.cnblogs.com/moveofgod/p/3775745.html

你可能感兴趣的文章
CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]
查看>>
NetApp针对其集群化方案“不值得升级”言论回击Wikibon
查看>>
QQ把游戏放进聊天框,这一点Facebook和微信都没做到
查看>>
在线匿名之父意欲终结“加密战争”
查看>>
WLAN市场销量逐步逼近有线网络
查看>>
SDN市场或许进入了慢热期
查看>>
教你使用Linux系统的Shell脚本维护Oracle
查看>>
浅谈物联网的保障措施
查看>>
力龙信息布局大数据领域
查看>>
大数据巧治职业差评师 生存空间锐减九成
查看>>
天津开展免费无线局域网建设
查看>>
朝鲜最新消息|今天勒索病毒跟朝鲜黑客有关
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
英国政府可能利用曼彻斯特自杀袭击要求互联网公司破解加密
查看>>
Mozilla 将大幅简化火狐浏览器的同步操作
查看>>
微软加大在 Edge/IE 浏览器上阻止 SHA-1 证书的力度
查看>>
龙芯将两款 CPU 核开源,这意味着什么?
查看>>
《51单片机应用开发从入门到精通》——导读
查看>>
PostgreSQL 锁解密
查看>>
用 C 语言写的程序不安全
查看>>